{"id":37515,"date":"2026-01-07T12:21:46","date_gmt":"2026-01-07T09:21:46","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/neden-php-8-1-ve-modern-gelistirme-ortami-kurmaliyiz\/"},"modified":"2026-01-07T12:21:46","modified_gmt":"2026-01-07T09:21:46","slug":"neden-php-8-1-ve-modern-gelistirme-ortami-kurmaliyiz","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/neden-php-8-1-ve-modern-gelistirme-ortami-kurmaliyiz\/","title":{"rendered":"Neden PHP 8.1 ve Modern Geli\u015ftirme Ortam\u0131 Kurmal\u0131y\u0131z?"},"content":{"rendered":"<p><title>Ubuntu&#8217;da PHP 8.1 Kurulumu ve Yerel Geli\u015ftirme Ortam\u0131 Olu\u015fturma Rehberi<\/title><br \/>\n<body><\/p>\n<style>\n    \/* Mobil uyumluluk i\u00e7in basit bir \u00f6rnek *\/\n    body {\n        font-family: Arial, sans-serif;\n        line-height: 1.6;\n        margin: 0 auto;\n        padding: 20px;\n        max-width: 1000px;\n    }\n    .uzman-ipucu {\n        background-color: #e0f7fa;\n        border-left: 5px solid #00bcd4;\n        padding: 15px;\n        margin: 20px 0;\n        border-radius: 4px;\n        font-style: italic;\n    }\n    pre {\n        background-color: #272822;\n        color: #f8f8f2;\n        padding: 15px;\n        border-radius: 5px;\n        overflow-x: auto;\n    }\n    code {\n        font-family: \"Courier New\", Courier, monospace;\n    }\n    table {\n        width: 100%;\n        border-collapse: collapse;\n        margin: 20px 0;\n    }\n    table, th, td {\n        border: 1px solid #ddd;\n    }\n    th, td {\n        padding: 10px;\n        text-align: left;\n    }\n    th {\n        background-color: #f2f2f2;\n    }<\/p>\n<p>    @media (max-width: 768px) {\n        body {\n            padding: 15px;\n        }\n        h2 {\n            font-size: 1.8em;\n        }\n        h3 {\n            font-size: 1.3em;\n        }\n        table, thead, tbody, th, td, tr {\n            display: block;\n        }\n        thead tr {\n            position: absolute;\n            top: -9999px;\n            left: -9999px;\n        }\n        tr { border: 1px solid #ccc; }\n        td {\n            border: none;\n            border-bottom: 1px solid #eee;\n            position: relative;\n            padding-left: 50%;\n        }\n        td:before {\n            position: absolute;\n            top: 6px;\n            left: 6px;\n            width: 45%;\n            padding-right: 10px;\n            white-space: nowrap;\n            content: attr(data-label); \/* Etiketi buraya \u00e7ekeriz *\/\n            font-weight: bold;\n        }\n    }\n<\/style>\n<p>Modern web uygulamalar\u0131 geli\u015ftirmek i\u00e7in g\u00fcncel ve stabil bir yerel geli\u015ftirme ortam\u0131na sahip olmak, her geli\u015ftiricinin temel ihtiyac\u0131d\u0131r. Ubuntu tabanl\u0131 sistemlerde PHP 8.1&#8217;i kurmak ve optimize edilmi\u015f bir geli\u015ftirme ortam\u0131 olu\u015fturmak, projelerinizin verimlili\u011fini ve performans\u0131n\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131rabilir. Bu rehberde, PHP 8.1&#8217;in kurulumundan web sunucusu entegrasyonuna, veritaban\u0131 y\u00f6netiminden hata ay\u0131klama ara\u00e7lar\u0131na kadar t\u00fcm ad\u0131mlar\u0131 detayl\u0131 bir \u015fekilde ele alaca\u011f\u0131z.<\/p>\n<h2>Neden PHP 8.1 ve Modern Geli\u015ftirme Ortam\u0131 Kurmal\u0131y\u0131z?<\/h2>\n<p>PHP, web geli\u015ftirme d\u00fcnyas\u0131n\u0131n en k\u00f6kl\u00fc ve yayg\u0131n kullan\u0131lan dillerinden biridir. Y\u0131llar i\u00e7inde b\u00fcy\u00fck bir evrim ge\u00e7irerek, sadece basit web siteleri de\u011fil, ayn\u0131 zamanda karma\u015f\u0131k kurumsal uygulamalar ve API&#8217;ler geli\u015ftirmek i\u00e7in de g\u00fc\u00e7l\u00fc bir ara\u00e7 haline gelmi\u015ftir. PHP 8.1 s\u00fcr\u00fcm\u00fc, bu evrimin \u00f6nemli bir a\u015famas\u0131n\u0131 temsil ediyor ve geli\u015ftiricilere bir dizi yenilik ve performans iyile\u015ftirmesi sunuyor. Peki, neden \u00f6zellikle PHP 8.1&#8217;i tercih etmeliyiz ve neden yerel bir geli\u015ftirme ortam\u0131 kurmak bu kadar kritik?<\/p>\n<p>\u00d6ncelikle, PHP 8.1 ile gelen yeniliklere bir g\u00f6z atal\u0131m. Bu s\u00fcr\u00fcm, dilin \u00e7ekirde\u011fine bir dizi \u00f6nemli \u00f6zellik ekledi. \u00d6rne\u011fin, <strong>Enums (Numaraland\u0131rmalar)<\/strong>, belirli bir de\u011fer k\u00fcmesinden se\u00e7im yap\u0131lmas\u0131 gereken durumlar i\u00e7in tip g\u00fcvenli\u011fi ve okunabilirlik sunar. Bu, \u00f6zellikle durum y\u00f6netimi veya sabit de\u011ferlerin kullan\u0131ld\u0131\u011f\u0131 senaryolarda kodun daha sa\u011flam olmas\u0131n\u0131 sa\u011flar. Ayr\u0131ca, <strong>Fibers<\/strong> ile e\u015fzamans\u0131z programlama yetenekleri art\u0131r\u0131lm\u0131\u015f, bu da I\/O yo\u011fun uygulamalarda performans art\u0131\u015f\u0131 potansiyeli yaratm\u0131\u015ft\u0131r. <strong>Read-only Properties (Salt Okunur \u00d6zellikler)<\/strong>, nesnelerin olu\u015fturulduktan sonra de\u011fi\u015ftirilemeyen \u00f6zelliklere sahip olmas\u0131n\u0131 sa\u011flayarak immutability (de\u011fi\u015fmezlik) prensibini destekler ve kodun tahmin edilebilirli\u011fini art\u0131r\u0131r. <strong>Intersection Types (Kesi\u015fim Tipleri)<\/strong> ise, bir de\u011fi\u015fkenin ayn\u0131 anda birden fazla aray\u00fcz\u00fc veya s\u0131n\u0131f\u0131 uygulamas\u0131n\u0131 gerektiren daha esnek tip bildirimlerine olanak tan\u0131r. T\u00fcm bu \u00f6zellikler, daha temiz, daha g\u00fcvenli ve daha performansl\u0131 kod yaz\u0131lmas\u0131na yard\u0131mc\u0131 olur.<\/p>\n<p>Performans a\u00e7\u0131s\u0131ndan bak\u0131ld\u0131\u011f\u0131nda, PHP 8.1, \u00f6nceki s\u00fcr\u00fcmlere g\u00f6re \u00f6nemli iyile\u015ftirmeler sunar. JIT (Just-In-Time) derleyicisi \u00fczerinde yap\u0131lan geli\u015ftirmeler ve genel optimizasyonlar sayesinde, uygulamalar daha h\u0131zl\u0131 \u00e7al\u0131\u015f\u0131r, bu da kullan\u0131c\u0131 deneyimini do\u011frudan etkiler. \u00d6zellikle y\u00fcksek trafikli uygulamalarda veya yo\u011fun i\u015flem gerektiren senaryolarda, bu performans art\u0131\u015f\u0131 kritik \u00f6neme sahiptir. Bu nedenle, projelerinizi g\u00fcncel tutmak ve en iyi performans\u0131 elde etmek i\u00e7in PHP 8.1&#8217;e ge\u00e7i\u015f yapmak mant\u0131kl\u0131 bir ad\u0131md\u0131r.<\/p>\n<p>Yerel geli\u015ftirme ortam\u0131 kurman\u0131n faydalar\u0131 ise saymakla bitmez. Birincisi, <strong>h\u0131z ve verimlilik<\/strong>. Kodunuzu her de\u011fi\u015fiklikte bir uzak sunucuya y\u00fcklemek zorunda kalmadan an\u0131nda test edebilirsiniz. Bu, geli\u015ftirme d\u00f6ng\u00fcs\u00fcn\u00fc h\u0131zland\u0131r\u0131r ve hatalar\u0131 daha \u00e7abuk tespit etmenizi sa\u011flar. \u0130kincisi, <strong>g\u00fcvenlik<\/strong>. Hassas verilerle \u00e7al\u0131\u015f\u0131rken veya hen\u00fcz kamuya a\u00e7\u0131k olmayan projeler \u00fczerinde \u00e7al\u0131\u015f\u0131rken, yerel ortam\u0131n\u0131zda kalmak, verilerinizi potansiyel d\u0131\u015f tehditlerden korur. \u00dc\u00e7\u00fcnc\u00fcs\u00fc, <strong>deneme imkan\u0131<\/strong>. Yeni teknolojileri, k\u00fct\u00fcphaneleri veya farkl\u0131 yap\u0131land\u0131rmalar\u0131, canl\u0131 sunucunuzu riske atmadan g\u00fcvenle deneyebilirsiniz. Bu, \u00f6\u011frenme ve yenilik yapma \u00f6zg\u00fcrl\u00fc\u011f\u00fc sa\u011flar. Ubuntu gibi Linux tabanl\u0131 bir i\u015fletim sistemi, sunucu ortamlar\u0131na yak\u0131nl\u0131\u011f\u0131 sayesinde, yerel ortam\u0131n\u0131zda geli\u015ftirdi\u011finiz uygulamalar\u0131n da\u011f\u0131t\u0131m ortam\u0131nda da benzer \u015fekilde \u00e7al\u0131\u015fmas\u0131n\u0131 garanti eder.<\/p>\n<div class=\"uzman-ipucu\">\n  Uzman \u0130pucu: PHP 8.1&#8217;in sundu\u011fu performans art\u0131\u015flar\u0131, \u00f6zellikle yo\u011fun API \u00e7a\u011fr\u0131lar\u0131 veya b\u00fcy\u00fck veri i\u015fleme s\u00fcre\u00e7leri i\u00e7eren uygulamalarda kendini g\u00f6sterir. Bu sayede, sunucu kaynaklar\u0131ndan daha verimli faydalanabilir ve daha fazla kullan\u0131c\u0131ya hizmet verebilirsiniz.\n<\/div>\n<p><strong>Vaka Analizi: E-ticaret Sitesi Geli\u015ftiricisinin PHP 8.1&#8217;e Ge\u00e7i\u015fi<\/strong><\/p>\n<p>Ali, k\u00fc\u00e7\u00fck bir e-ticaret sitesi i\u00e7in PHP 7.4 ile \u00e7al\u0131\u015fan bir altyap\u0131 kullan\u0131yordu. Site, \u00f6zellikle kampanya d\u00f6nemlerinde veya y\u00fcksek trafik anlar\u0131nda yava\u015flamalar ya\u015f\u0131yor, sepet i\u015flemleri gecikiyor ve genel kullan\u0131c\u0131 deneyimi olumsuz etkileniyordu. Ali, PHP 8.1&#8217;e ge\u00e7i\u015f yapmaya karar verdi. Yerel Ubuntu ortam\u0131nda PHP 8.1&#8217;i kurdu, mevcut kod taban\u0131n\u0131 yeni s\u00fcr\u00fcme uyarlad\u0131 ve testler yapt\u0131. Sonu\u00e7lar \u015fa\u015f\u0131rt\u0131c\u0131yd\u0131: \u00d6deme s\u00fcre\u00e7leri %15 daha h\u0131zl\u0131 tamamlan\u0131yor, \u00fcr\u00fcn listeleme sayfalar\u0131 %20 daha h\u0131zl\u0131 y\u00fckleniyor ve genel sunucu yan\u0131t s\u00fcreleri iyile\u015fiyordu. Ayr\u0131ca, 8.1&#8217;in sundu\u011fu Enums gibi \u00f6zellikler sayesinde, sipari\u015f durumlar\u0131n\u0131 y\u00f6neten kod daha okunabilir ve hata yapmaya daha az meyilli hale geldi. Bu ge\u00e7i\u015f, sadece performans art\u0131\u015f\u0131 sa\u011flamakla kalmad\u0131, ayn\u0131 zamanda Ali&#8217;nin kod kalitesini art\u0131rmas\u0131na ve gelecekteki geli\u015ftirmeler i\u00e7in daha sa\u011flam bir temel olu\u015fturmas\u0131na da yard\u0131mc\u0131 oldu.<\/p>\n<p>\u00d6zetle, PHP 8.1, modern web geli\u015ftirme i\u00e7in gerekli olan h\u0131z, g\u00fcvenlik ve geli\u015ftirici deneyimi iyile\u015ftirmelerini sunar. Ubuntu \u00fczerinde kurulu bir yerel ortam ise bu potansiyeli tam anlam\u0131yla kullanman\u0131z\u0131 sa\u011flayarak, projelerinizi daha h\u0131zl\u0131, daha g\u00fcvenli ve daha verimli bir \u015fekilde hayata ge\u00e7irmenize olanak tan\u0131r. Bu rehberin geri kalan\u0131nda, bu g\u00fc\u00e7l\u00fc ortam\u0131 ad\u0131m ad\u0131m nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 \u00f6\u011freneceksiniz.<\/p>\n<h2>Ubuntu&#8217;da PHP 8.1 Kurulumuna Ba\u015flamadan \u00d6nce Bilinmesi Gerekenler Nelerdir?<\/h2>\n<p>Herhangi bir yaz\u0131l\u0131m kurulumuna ba\u015flamadan \u00f6nce, sisteminizin haz\u0131r oldu\u011fundan ve gerekli \u00f6n ko\u015fullar\u0131 kar\u015f\u0131lad\u0131\u011f\u0131ndan emin olmak kritik \u00f6nem ta\u015f\u0131r. Ubuntu \u00fczerinde PHP 8.1 ve bir yerel geli\u015ftirme ortam\u0131 kurarken de bu durum farkl\u0131 de\u011fildir. Bu b\u00f6l\u00fcmde, kurulum s\u00fcrecine ba\u015flamadan \u00f6nce bilmeniz gereken temel bilgileri ve yapman\u0131z gereken haz\u0131rl\u0131klar\u0131 detayl\u0131ca ele alaca\u011f\u0131z. Bu ad\u0131mlar, sorunsuz bir kurulum deneyimi ve gelecekte ya\u015fanabilecek olas\u0131 uyumluluk sorunlar\u0131n\u0131n \u00f6n\u00fcne ge\u00e7mek i\u00e7in hayati \u00f6neme sahiptir.<\/p>\n<p>\u00d6ncelikle, <strong>sistem gereksinimleri<\/strong> konusuna de\u011finelim. PHP 8.1, modern bir sistem \u00fczerinde sorunsuz \u00e7al\u0131\u015facak \u015fekilde tasarlanm\u0131\u015ft\u0131r. Minimum olarak 2 GB RAM ve 20 GB bo\u015f disk alan\u0131 \u00f6nerilir; ancak e\u011fer birden fazla proje \u00fczerinde \u00e7al\u0131\u015facak, veritabanlar\u0131 kuracak ve \u00e7e\u015fitli geli\u015ftirme ara\u00e7lar\u0131 kullanacaksan\u0131z, bu de\u011ferlerin \u00fczerinde bir kapasiteye sahip olman\u0131z, geli\u015ftirme deneyiminizi \u00e7ok daha ak\u0131c\u0131 hale getirecektir. \u00d6zellikle sanal makineler (VM) veya konteynerler (Docker) kullanmay\u0131 d\u00fc\u015f\u00fcn\u00fcyorsan\u0131z, bu kaynaklar\u0131 do\u011fru bir \u015fekilde ay\u0131rmak performans a\u00e7\u0131s\u0131ndan b\u00fcy\u00fck fark yaratacakt\u0131r. \u0130\u015flemci g\u00fcc\u00fc de elbette \u00f6nemlidir; modern bir \u00e7ok \u00e7ekirdekli i\u015flemci, derleme ve test s\u00fcre\u00e7lerini h\u0131zland\u0131racakt\u0131r.<\/p>\n<p>\u0130kinci olarak, <strong>g\u00fcncel bir Ubuntu s\u00fcr\u00fcm\u00fc<\/strong> kullanmak olduk\u00e7a \u00f6nemlidir. Ubuntu&#8217;nun LTS (Long Term Support) s\u00fcr\u00fcmleri (\u00f6rne\u011fin Ubuntu 20.04 LTS veya 22.04 LTS), uzun s\u00fcreli destek sunduklar\u0131 i\u00e7in genellikle geli\u015ftirme ortamlar\u0131 i\u00e7in tercih edilir. Bu s\u00fcr\u00fcmler, kararl\u0131l\u0131k ve g\u00fcvenlik g\u00fcncellemeleri a\u00e7\u0131s\u0131ndan daha g\u00fcvenilirdir. Eski bir Ubuntu s\u00fcr\u00fcm\u00fc kullan\u0131yorsan\u0131z, baz\u0131 paketlerin uyumluluk sorunlar\u0131 \u00e7\u0131karmas\u0131 veya g\u00fcncel PHP s\u00fcr\u00fcm\u00fcn\u00fc do\u011frudan depolardan kuramaman\u0131z olas\u0131d\u0131r. Bu nedenle, kurulum \u00f6ncesinde sisteminizi g\u00fcncel bir LTS s\u00fcr\u00fcm\u00fcne y\u00fckseltmeniz \u015fiddetle tavsiye edilir.<\/p>\n<p>\u00dc\u00e7\u00fcnc\u00fc olarak, <strong>terminal kullan\u0131m\u0131 temelleri<\/strong>ne hakim olmak bu s\u00fcre\u00e7te vazge\u00e7ilmezdir. Ubuntu&#8217;da bir\u00e7ok kurulum ve yap\u0131land\u0131rma i\u015flemi komut sat\u0131r\u0131 arac\u0131l\u0131\u011f\u0131yla yap\u0131l\u0131r. Temel komutlar olan <code>sudo<\/code> (y\u00f6netici ayr\u0131cal\u0131klar\u0131), <code>apt update<\/code> (paket listelerini g\u00fcncelleme), <code>apt upgrade<\/code> (y\u00fckl\u00fc paketleri g\u00fcncelleme), <code>apt install<\/code> (paket y\u00fckleme), <code>cd<\/code> (dizin de\u011fi\u015ftirme), <code>ls<\/code> (dizin i\u00e7eri\u011fini listeleme) ve <code>nano<\/code> veya <code>vim<\/code> gibi metin d\u00fczenleyicileriyle dosya d\u00fczenleme bilgisi, t\u00fcm bu ad\u0131mlar\u0131 ba\u015far\u0131yla tamamlaman\u0131z i\u00e7in yeterli olacakt\u0131r. E\u011fer terminal kullan\u0131m\u0131na yabanc\u0131ysan\u0131z, bu temel komutlara k\u0131sa bir g\u00f6z atman\u0131z faydal\u0131 olacakt\u0131r.<\/p>\n<p>D\u00f6rd\u00fcnc\u00fc olarak, <strong>g\u00fcvenlik g\u00fcncellemeleri ve sistemin haz\u0131rlanmas\u0131<\/strong>. Herhangi bir yeni yaz\u0131l\u0131m y\u00fcklemeden \u00f6nce, sisteminizin g\u00fcncel ve g\u00fcvenli oldu\u011fundan emin olmal\u0131s\u0131n\u0131z. A\u015fa\u011f\u0131daki komutlar\u0131 \u00e7al\u0131\u015ft\u0131rarak paket listelerinizi g\u00fcncelleyebilir ve mevcut paketlerinizi y\u00fckseltebilirsiniz. Bu, olas\u0131 ba\u011f\u0131ml\u0131l\u0131k sorunlar\u0131n\u0131 \u00f6nler ve sisteminizin en son g\u00fcvenlik yamalar\u0131na sahip olmas\u0131n\u0131 sa\u011flar.<\/p>\n<pre><code>\nsudo apt update\nsudo apt upgrade -y\n<\/code><\/pre>\n<p>Be\u015finci ve \u00f6nemli bir nokta ise <strong>PPA (Personal Package Archive) kavram\u0131<\/strong>d\u0131r. Ubuntu&#8217;nun resmi depolar\u0131 genellikle kararl\u0131 ve iyi test edilmi\u015f paketler i\u00e7erir, ancak bazen en son yaz\u0131l\u0131m s\u00fcr\u00fcmlerini (t\u0131pk\u0131 PHP 8.1 gibi) i\u00e7ermeyebilirler. Bu gibi durumlarda, \u00fc\u00e7\u00fcnc\u00fc taraf geli\u015ftiricilerin olu\u015fturdu\u011fu PPA&#8217;lar devreye girer. PHP&#8217;nin en g\u00fcncel s\u00fcr\u00fcmlerini Ubuntu&#8217;ya kurmak i\u00e7in genellikle Ondrej PPA&#8217;s\u0131 kullan\u0131l\u0131r. Bu PPA, Debian ve Ubuntu i\u00e7in PHP&#8217;nin \u00e7e\u015fitli s\u00fcr\u00fcmlerini ve ilgili mod\u00fcllerini sunan g\u00fcvenilir bir kaynakt\u0131r. Bu PPA&#8217;y\u0131 sisteminize ekleyerek, PHP 8.1&#8217;i kolayca kurabilirsiniz. Ancak, herhangi bir PPA eklerken, kayna\u011f\u0131n g\u00fcvenilirli\u011fini ara\u015ft\u0131rman\u0131z \u00f6nemlidir.<\/p>\n<div class=\"uzman-ipucu\">\n  Uzman \u0130pucu: Kurulum \u00f6ncesinde sisteminizin bir yede\u011fini almak, beklenmedik sorunlar kar\u015f\u0131s\u0131nda sizi b\u00fcy\u00fck bir dertten kurtarabilir. \u00d6zellikle sanal makine kullan\u0131yorsan\u0131z, bir &#8220;snapshot&#8221; almak saniyeler i\u00e7inde geri d\u00f6nmenizi sa\u011flar.\n<\/div>\n<p>Son olarak, planlama. Hangi web sunucusunu (Apache veya Nginx), hangi veritaban\u0131n\u0131 (MySQL veya PostgreSQL) kullanaca\u011f\u0131n\u0131za karar vermek, kurulum s\u00fcrecini daha d\u00fczenli hale getirecektir. Bu se\u00e7imler, projenizin gereksinimlerine ve ki\u015fisel tercihlerinize g\u00f6re de\u011fi\u015febilir. Bu rehberde her iki pop\u00fcler se\u00e7ene\u011fi de ele alaca\u011f\u0131z, b\u00f6ylece projenize en uygun olan\u0131 se\u00e7me esnekli\u011fine sahip olacaks\u0131n\u0131z. Bu \u00f6n haz\u0131rl\u0131klar, PHP 8.1&#8217;in Ubuntu&#8217;ya sorunsuz bir \u015fekilde entegre olmas\u0131n\u0131 sa\u011flayacak ve geli\u015ftirme s\u00fcrecinizi \u00e7ok daha keyifli hale getirecektir.<\/p>\n<h2>Ad\u0131m Ad\u0131m PHP 8.1 Ubuntu&#8217;ya Nas\u0131l Kurulur?<\/h2>\n<p>Art\u0131k sistemimizin haz\u0131r oldu\u011funu varsayarak, PHP 8.1&#8217;i Ubuntu&#8217;ya kurma s\u00fcrecine ge\u00e7ebiliriz. Bu b\u00f6l\u00fcm, PHP&#8217;nin temel bile\u015fenlerini ve web geli\u015ftirme i\u00e7in gerekli olan pop\u00fcler mod\u00fclleri ad\u0131m ad\u0131m nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 detayland\u0131racakt\u0131r. S\u00fcrecin her a\u015famas\u0131, komut sat\u0131r\u0131 \u00fczerinden ger\u00e7ekle\u015ftirilecek ve her bir komutun ne anlama geldi\u011fi a\u00e7\u0131klanacakt\u0131r. Unutmay\u0131n, bu ad\u0131mlar\u0131 dikkatlice takip etmek, sorunsuz bir kurulum i\u00e7in anahtard\u0131r.<\/p>\n<h3>3.1: Sisteminizi G\u00fcncelleme ve Ondrej PPA&#8217;y\u0131 Ekleme<\/h3>\n<p>Daha \u00f6nce de belirtti\u011fimiz gibi, herhangi bir b\u00fcy\u00fck kurulumdan \u00f6nce sisteminizin g\u00fcncel olmas\u0131 \u00f6nemlidir. Bu, ba\u011f\u0131ml\u0131l\u0131k sorunlar\u0131n\u0131 \u00f6nler ve en son g\u00fcvenlik yamalar\u0131na sahip olman\u0131z\u0131 sa\u011flar. Terminali a\u00e7\u0131n (Ctrl+Alt+T) ve a\u015fa\u011f\u0131daki komutlar\u0131 \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code>\nsudo apt update\nsudo apt upgrade -y\nsudo apt install software-properties-common -y\n<\/code><\/pre>\n<p><code>software-properties-common<\/code> paketi, PPA&#8217;lar\u0131 kolayca y\u00f6netmenizi sa\u011flayan ara\u00e7lar\u0131 i\u00e7erir. \u015eimdi, PHP&#8217;nin en g\u00fcncel s\u00fcr\u00fcmlerini sa\u011flayan pop\u00fcler Ondrej PPA&#8217;s\u0131n\u0131 ekleyelim. Bu PPA, Debian ve Ubuntu i\u00e7in PHP&#8217;nin farkl\u0131 s\u00fcr\u00fcmlerini ve ilgili mod\u00fcllerini g\u00fcvenilir bir \u015fekilde sunar:<\/p>\n<pre><code>\nsudo add-apt-repository ppa:ondrej\/php -y\nsudo apt update\n<\/code><\/pre>\n<p>\u0130lk komut, PPA&#8217;y\u0131 sisteminizin yaz\u0131l\u0131m kaynaklar\u0131na ekler. \u0130kinci <code>sudo apt update<\/code> komutu ise, yeni eklenen PPA&#8217;daki paket bilgilerini sisteminize indirerek, PHP 8.1 paketlerinin art\u0131k kurulum i\u00e7in eri\u015filebilir olmas\u0131n\u0131 sa\u011flar.<\/p>\n<h3>3.2: PHP 8.1 ve Gerekli Mod\u00fclleri Kurma<\/h3>\n<p>PPA&#8217;y\u0131 ekledikten ve paket listelerinizi g\u00fcncelledikten sonra, PHP 8.1&#8217;i ve web geli\u015ftirme i\u00e7in s\u0131kl\u0131kla ihtiya\u00e7 duyulan mod\u00fclleri kurmaya ba\u015flayabiliriz. Modern PHP uygulamalar\u0131 genellikle PHP-FPM (FastCGI Process Manager) ile \u00e7al\u0131\u015f\u0131r. Bu, web sunucusunun (Apache veya Nginx) PHP kodunu ayr\u0131 bir i\u015flem olarak \u00e7al\u0131\u015ft\u0131rmas\u0131n\u0131 sa\u011flar, bu da performans ve kararl\u0131l\u0131k a\u00e7\u0131s\u0131ndan avantajl\u0131d\u0131r. Ayr\u0131ca, komut sat\u0131r\u0131 (CLI) uygulamalar\u0131 i\u00e7in de PHP&#8217;ye ihtiyac\u0131m\u0131z olacak.<\/p>\n<p>A\u015fa\u011f\u0131daki komut, PHP 8.1&#8217;in temel bile\u015fenlerini ve yayg\u0131n olarak kullan\u0131lan mod\u00fcllerini kuracakt\u0131r:<\/p>\n<pre><code>\nsudo apt install php8.1-cli php8.1-fpm php8.1-mysql php8.1-gd php8.1-curl php8.1-mbstring php8.1-xml php8.1-zip php8.1-intl php8.1-common php8.1-opcache -y\n<\/code><\/pre>\n<p>Bu komutta kurdu\u011fumuz baz\u0131 \u00f6nemli mod\u00fcllerin ne i\u015fe yarad\u0131\u011f\u0131na k\u0131saca g\u00f6z atal\u0131m:<\/p>\n<ul>\n<li><code>php8.1-cli<\/code>: Komut sat\u0131r\u0131 aray\u00fcz\u00fcnden PHP betiklerini \u00e7al\u0131\u015ft\u0131rmak i\u00e7in gereklidir.<\/li>\n<li><code>php8.1-fpm<\/code>: Web sunucular\u0131 ile PHP aras\u0131nda ileti\u015fim kuran FastCGI Process Manager&#8217;\u0131 sa\u011flar. Y\u00fcksek performansl\u0131 web uygulamalar\u0131 i\u00e7in kritik \u00f6neme sahiptir.<\/li>\n<li><code>php8.1-mysql<\/code>: MySQL ve MariaDB veritabanlar\u0131na ba\u011flanmak i\u00e7in kullan\u0131l\u0131r.<\/li>\n<li><code>php8.1-gd<\/code>: G\u00f6r\u00fcnt\u00fc i\u015fleme fonksiyonlar\u0131 (k\u00fc\u00e7\u00fck resim olu\u015fturma, filigran ekleme vb.) sa\u011flar.<\/li>\n<li><code>php8.1-curl<\/code>: \u00c7e\u015fitli protokoller (HTTP, FTP vb.) \u00fczerinden veri transferi yapmak i\u00e7in kullan\u0131l\u0131r. API \u00e7a\u011fr\u0131lar\u0131 i\u00e7in vazge\u00e7ilmezdir.<\/li>\n<li><code>php8.1-mbstring<\/code>: \u00c7ok baytl\u0131 karakter dizileriyle (UTF-8 gibi) \u00e7al\u0131\u015fmak i\u00e7in gereklidir. Uluslararas\u0131 uygulamalar i\u00e7in \u00f6nemlidir.<\/li>\n<li><code>php8.1-xml<\/code>: XML verilerini ayr\u0131\u015ft\u0131rmak ve olu\u015fturmak i\u00e7in kullan\u0131l\u0131r.<\/li>\n<li><code>php8.1-zip<\/code>: Zip dosyalar\u0131n\u0131 olu\u015fturmak ve \u00e7\u0131karmak i\u00e7in fonksiyonlar sa\u011flar.<\/li>\n<li><code>php8.1-intl<\/code>: Uluslararas\u0131la\u015ft\u0131rma ve yerelle\u015ftirme (dil, para birimi, tarih formatlar\u0131) i\u015flevleri i\u00e7in kullan\u0131l\u0131r.<\/li>\n<li><code>php8.1-common<\/code>: PHP&#8217;nin temel fonksiyonlar\u0131 ve yard\u0131mc\u0131 programlar\u0131 i\u00e7in ortak dosyalar\u0131 i\u00e7erir.<\/li>\n<li><code>php8.1-opcache<\/code>: PHP kodunu \u00f6nbelle\u011fe alarak performans\u0131 art\u0131ran bir mod\u00fcld\u00fcr.<\/li>\n<\/ul>\n<h3>3.3: Kurulumu Do\u011frulama ve PHP S\u00fcr\u00fcm\u00fcn\u00fc Kontrol Etme<\/h3>\n<p>Kurulum tamamland\u0131ktan sonra, PHP&#8217;nin do\u011fru bir \u015fekilde kurulup kurulmad\u0131\u011f\u0131n\u0131 ve hangi s\u00fcr\u00fcm\u00fcn aktif oldu\u011funu do\u011frulamak \u00f6nemlidir. Terminalde a\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code>\nphp -v\n<\/code><\/pre>\n<p>Bu komutun \u00e7\u0131kt\u0131s\u0131, sisteminizde kurulu olan PHP s\u00fcr\u00fcm\u00fcn\u00fc g\u00f6sterecektir. \u015euna benzer bir \u00e7\u0131kt\u0131 g\u00f6rmelisiniz:<\/p>\n<pre><code>\nPHP 8.1.x (cli) (built: ...) (NTS)\nCopyright (c) The PHP Group\nZend Engine v4.1.x, with Zend OPcache v8.1.x\n<\/code><\/pre>\n<p>E\u011fer \u00e7\u0131kt\u0131 PHP 8.1&#8217;i g\u00f6steriyorsa, CLI s\u00fcr\u00fcm\u00fc ba\u015far\u0131yla kurulmu\u015f demektir. PHP-FPM servisinin \u00e7al\u0131\u015f\u0131p \u00e7al\u0131\u015fmad\u0131\u011f\u0131n\u0131 kontrol etmek i\u00e7in ise a\u015fa\u011f\u0131daki komutu kullanabilirsiniz:<\/p>\n<pre><code>\nsudo systemctl status php8.1-fpm\n<\/code><\/pre>\n<p>\u00c7\u0131kt\u0131da &#8220;active (running)&#8221; ifadesini g\u00f6rmelisiniz. E\u011fer \u00e7al\u0131\u015fm\u0131yorsa, a\u015fa\u011f\u0131daki komutla ba\u015flatabilirsiniz:<\/p>\n<pre><code>\nsudo systemctl start php8.1-fpm\nsudo systemctl enable php8.1-fpm\n<\/code><\/pre>\n<p><code>enable<\/code> komutu, sistem ba\u015flang\u0131c\u0131nda PHP-FPM servisinin otomatik olarak ba\u015flamas\u0131n\u0131 sa\u011flar. Bu ad\u0131mlarla, PHP 8.1&#8217;in temel kurulumunu ba\u015far\u0131yla tamamlam\u0131\u015f oldunuz. \u015eimdi s\u0131ra, bu PHP kurulumunu bir web sunucusu ile entegre etmeye geldi.<\/p>\n<div class=\"uzman-ipucu\">\n  Uzman \u0130pucu: Birden fazla PHP s\u00fcr\u00fcm\u00fcn\u00fc ayn\u0131 anda kurman\u0131z ve bunlar aras\u0131nda ge\u00e7i\u015f yapman\u0131z gerekebilir. Ondrej PPA, bu esnekli\u011fi sunar. \u00d6rne\u011fin, <code>sudo update-alternatives --config php<\/code> komutu ile varsay\u0131lan CLI PHP s\u00fcr\u00fcm\u00fcn\u00fc se\u00e7ebilirsiniz.\n<\/div>\n<p>Bu b\u00f6l\u00fcm, PHP 8.1&#8217;in Ubuntu \u00fczerindeki temel kurulumunu ve do\u011frulamas\u0131n\u0131 kapsamaktad\u0131r. Kurulum s\u0131ras\u0131nda herhangi bir sorunla kar\u015f\u0131la\u015f\u0131rsan\u0131z, genellikle hata mesajlar\u0131 sorunun nerede oldu\u011funu anlaman\u0131za yard\u0131mc\u0131 olacakt\u0131r. \u0130nternet \u00fczerindeki forumlar ve dok\u00fcmantasyonlar da bu t\u00fcr durumlarda iyi birer kaynak olabilir. \u015eimdi, bu PHP kurulumunu web sunucular\u0131m\u0131zla nas\u0131l entegre edece\u011fimize bakal\u0131m.<\/p>\n<h3>Web Sunucusu Entegrasyonu: Apache veya Nginx ile PHP-FPM Nas\u0131l Yap\u0131land\u0131r\u0131l\u0131r?<\/h3>\n<p>PHP 8.1&#8217;i ba\u015far\u0131yla kurduktan sonra, web uygulamalar\u0131n\u0131z\u0131n taray\u0131c\u0131 \u00fczerinden eri\u015filebilir olmas\u0131 i\u00e7in bir web sunucusu ile entegre etmeniz gerekir. En pop\u00fcler iki web sunucusu Apache ve Nginx&#8217;tir. Her ikisi de PHP-FPM ile m\u00fckemmel bir \u015fekilde \u00e7al\u0131\u015f\u0131r ve farkl\u0131 kullan\u0131m senaryolar\u0131na g\u00f6re avantajlar sunar. Bu b\u00f6l\u00fcmde, her iki web sunucusuyla da PHP 8.1&#8217;i nas\u0131l yap\u0131land\u0131raca\u011f\u0131n\u0131z\u0131 ve sanal hostlar (Virtual Hosts) olu\u015fturarak birden fazla projenizi nas\u0131l y\u00f6netece\u011finizi ad\u0131m ad\u0131m a\u00e7\u0131klayaca\u011f\u0131z.<\/p>\n<h4>Apache ile PHP 8.1 (PHP-FPM) Nas\u0131l Yap\u0131land\u0131r\u0131l\u0131r?<\/h4>\n<p>Apache, uzun y\u0131llard\u0131r web sunucusu pazar\u0131nda lider konumda olan, esnek ve g\u00fc\u00e7l\u00fc bir sunucudur. PHP-FPM ile entegrasyonu, Apache&#8217;nin geleneksel <code>mod_php<\/code> mod\u00fcl\u00fcne g\u00f6re daha iyi performans ve izolasyon sa\u011flar.<\/p>\n<ol>\n<li><strong>Apache Kurulumu:<\/strong><br \/>\n        E\u011fer Apache sisteminizde kurulu de\u011filse, a\u015fa\u011f\u0131daki komutla kurabilirsiniz:<\/p>\n<pre><code>\nsudo apt install apache2 -y\n        <\/code><\/pre>\n<p>        Kurulum tamamland\u0131ktan sonra Apache servisinin \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olun:<\/p>\n<pre><code>\nsudo systemctl status apache2\n        <\/code><\/pre>\n<p>        &#8220;active (running)&#8221; \u00e7\u0131kt\u0131s\u0131n\u0131 g\u00f6rmelisiniz.<\/li>\n<li><strong>PHP-FPM Mod\u00fcl\u00fcn\u00fc Etkinle\u015ftirme:<\/strong><br \/>\n        Apache&#8217;nin PHP-FPM ile konu\u015fabilmesi i\u00e7in <code>mod_proxy_fcgi<\/code> ve <code>mod_rewrite<\/code> mod\u00fcllerini etkinle\u015ftirmemiz gerekir:<\/p>\n<pre><code>\nsudo a2enmod proxy_fcgi setenvif rewrite\nsudo a2enconf php8.1-fpm\nsudo systemctl restart apache2\n        <\/code><\/pre>\n<p>        <code>a2enmod<\/code> komutu, Apache mod\u00fcllerini etkinle\u015ftirir. <code>a2enconf php8.1-fpm<\/code> ise, PHP-FPM yap\u0131land\u0131rma dosyas\u0131n\u0131 etkinle\u015ftirir. Son olarak, Apache&#8217;yi yeniden ba\u015flatarak de\u011fi\u015fiklikleri uyguluyoruz.<\/li>\n<li><strong>Sanal Host (Virtual Host) Olu\u015fturma:<\/strong><br \/>\n        Her projeniz i\u00e7in ayr\u0131 bir sanal host olu\u015fturmak, projelerinizi birbirinden izole etmenizi ve farkl\u0131 domainler \u00fczerinden eri\u015fmenizi sa\u011flar. \u00d6rnek olarak <code>benimprojem.local<\/code> ad\u0131nda bir proje i\u00e7in sanal host olu\u015ftural\u0131m.<br \/>\n        \u00d6ncelikle proje dizinimizi olu\u015ftural\u0131m:<\/p>\n<pre><code>\nsudo mkdir -p \/var\/www\/html\/benimprojem\nsudo chown -R $USER:$USER \/var\/www\/html\/benimprojem\n        <\/code><\/pre>\n<p>        Ard\u0131ndan, yeni bir Apache yap\u0131land\u0131rma dosyas\u0131 olu\u015ftural\u0131m:<\/p>\n<pre><code>\nsudo nano \/etc\/apache2\/sites-available\/benimprojem.local.conf\n        <\/code><\/pre>\n<p>        Dosyan\u0131n i\u00e7ine a\u015fa\u011f\u0131daki i\u00e7eri\u011fi yap\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code>\n&lt;VirtualHost *:80&gt;\n    ServerAdmin webmaster@localhost\n    ServerName benimprojem.local\n    DocumentRoot \/var\/www\/html\/benimprojem\n\n    &lt;Directory \/var\/www\/html\/benimprojem&gt;\n        Options Indexes FollowSymLinks\n        AllowOverride All\n        Require all granted\n    &lt;\/Directory&gt;\n\n    ErrorLog ${APACHE_LOG_DIR}\/benimprojem.local_error.log\n    CustomLog ${APACHE_LOG_DIR}\/benimprojem.local_access.log combined\n\n    &lt;FilesMatch \\.php$&gt;\n        SetHandler \"proxy:unix:\/run\/php\/php8.1-fpm.sock|fcgi:\/\/localhost\/\"\n    &lt;\/FilesMatch&gt;\n&lt;\/VirtualHost&gt;\n        <\/code><\/pre>\n<p>        Bu yap\u0131land\u0131rma, Apache&#8217;ye <code>benimprojem.local<\/code> adresine gelen istekleri <code>\/var\/www\/html\/benimprojem<\/code> dizinine y\u00f6nlendirmesini ve PHP dosyalar\u0131n\u0131 PHP 8.1 FPM soketi arac\u0131l\u0131\u011f\u0131yla i\u015flemesini s\u00f6yler.<br \/>\n        Sanal host&#8217;u etkinle\u015ftirin ve Apache&#8217;yi yeniden ba\u015flat\u0131n:<\/p>\n<pre><code>\nsudo a2ensite benimprojem.local.conf\nsudo systemctl reload apache2\n        <\/code><\/pre>\n<\/li>\n<li><strong>Hosts Dosyas\u0131n\u0131 D\u00fczenleme:<\/strong><br \/>\n        Yerel ortam\u0131n\u0131zda <code>benimprojem.local<\/code> adresini kullanabilmek i\u00e7in <code>\/etc\/hosts<\/code> dosyan\u0131z\u0131 d\u00fczenlemeniz gerekir:<\/p>\n<pre><code>\nsudo nano \/etc\/hosts\n        <\/code><\/pre>\n<p>        Dosyan\u0131n sonuna a\u015fa\u011f\u0131daki sat\u0131r\u0131 ekleyin:<\/p>\n<pre><code>\n127.0.0.1    benimprojem.local\n        <\/code><\/pre>\n<p>        Kaydedip kapat\u0131n.<\/li>\n<li><strong>Test Etme:<\/strong><br \/>\n        <code>\/var\/www\/html\/benimprojem<\/code> dizinine bir <code>index.php<\/code> dosyas\u0131 olu\u015fturun:<\/p>\n<pre><code>\necho \"&lt;?php phpinfo(); ?&gt;\" | sudo tee \/var\/www\/html\/benimprojem\/index.php\n        <\/code><\/pre>\n<p>        Taray\u0131c\u0131n\u0131zda <code>http:\/\/benimprojem.local<\/code> adresine gidin. PHP 8.1 bilgi sayfas\u0131n\u0131 g\u00f6rmelisiniz.<\/li>\n<\/ol>\n<h4>Nginx ile PHP 8.1 (PHP-FPM) Nas\u0131l Yap\u0131land\u0131r\u0131l\u0131r?<\/h4>\n<p>Nginx, \u00f6zellikle y\u00fcksek performans ve e\u015fzamanl\u0131 ba\u011flant\u0131lar\u0131 y\u00f6netme yetene\u011fi ile bilinen hafif ve g\u00fc\u00e7l\u00fc bir web sunucusudur. Genellikle statik i\u00e7erik sunumunda ve ters proxy olarak kullan\u0131l\u0131r, dinamik i\u00e7erik i\u00e7in PHP-FPM ile entegre edilir.<\/p>\n<ol>\n<li><strong>Nginx Kurulumu:<\/strong><br \/>\n        E\u011fer Nginx sisteminizde kurulu de\u011filse:<\/p>\n<pre><code>\nsudo apt install nginx -y\n        <\/code><\/pre>\n<p>        Nginx servisinin \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olun:<\/p>\n<pre><code>\nsudo systemctl status nginx\n        <\/code><\/pre>\n<\/li>\n<li><strong>Sanal Host (Server Block) Olu\u015fturma:<\/strong><br \/>\n        Apache&#8217;deki sanal hostlara benzer \u015fekilde, Nginx&#8217;te &#8220;server block&#8221;lar olu\u015ftururuz.<br \/>\n        Proje dizinimizi olu\u015ftural\u0131m:<\/p>\n<pre><code>\nsudo mkdir -p \/var\/www\/html\/benimprojem_nginx\nsudo chown -R $USER:$USER \/var\/www\/html\/benimprojem_nginx\n        <\/code><\/pre>\n<p>        Yeni bir Nginx yap\u0131land\u0131rma dosyas\u0131 olu\u015ftural\u0131m:<\/p>\n<pre><code>\nsudo nano \/etc\/nginx\/sites-available\/benimprojem_nginx.local\n        <\/code><\/pre>\n<p>        Dosyan\u0131n i\u00e7ine a\u015fa\u011f\u0131daki i\u00e7eri\u011fi yap\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code>\nserver {\n    listen 80;\n    server_name benimprojem_nginx.local;\n    root \/var\/www\/html\/benimprojem_nginx;\n    index index.php index.html index.htm;\n\n    location \/ {\n        try_files $uri $uri\/ =404;\n    }\n\n    location ~ \\.php$ {\n        include snippets\/fastcgi-php.conf;\n        fastcgi_pass unix:\/run\/php\/php8.1-fpm.sock;\n    }\n\n    error_log \/var\/log\/nginx\/benimprojem_nginx_error.log;\n    access_log \/var\/log\/nginx\/benimprojem_nginx_access.log;\n}\n        <\/code><\/pre>\n<p>        Bu yap\u0131land\u0131rma, Nginx&#8217;e <code>benimprojem_nginx.local<\/code> adresine gelen istekleri <code>\/var\/www\/html\/benimprojem_nginx<\/code> dizinine y\u00f6nlendirmesini ve PHP dosyalar\u0131n\u0131 PHP 8.1 FPM soketi arac\u0131l\u0131\u011f\u0131yla i\u015flemesini s\u00f6yler.<\/li>\n<li><strong>Server Block&#8217;u Etkinle\u015ftirme ve Nginx&#8217;i Yeniden Ba\u015flatma:<\/strong><br \/>\n        Yap\u0131land\u0131rma dosyas\u0131n\u0131 <code>sites-enabled<\/code> dizinine sembolik link olu\u015fturarak etkinle\u015ftirin ve Nginx yap\u0131land\u0131rmas\u0131n\u0131 test edip yeniden y\u00fckleyin:<\/p>\n<pre><code>\nsudo ln -s \/etc\/nginx\/sites-available\/benimprojem_nginx.local \/etc\/nginx\/sites-enabled\/\nsudo nginx -t\nsudo systemctl reload nginx\n        <\/code><\/pre>\n<\/li>\n<li><strong>Hosts Dosyas\u0131n\u0131 D\u00fczenleme:<\/strong><br \/>\n        <code>\/etc\/hosts<\/code> dosyan\u0131za Nginx projeniz i\u00e7in de bir giri\u015f ekleyin:<\/p>\n<pre><code>\nsudo nano \/etc\/hosts\n        <\/code><\/pre>\n<p>        Dosyan\u0131n sonuna a\u015fa\u011f\u0131daki sat\u0131r\u0131 ekleyin:<\/p>\n<pre><code>\n127.0.0.1    benimprojem_nginx.local\n        <\/code><\/pre>\n<p>        Kaydedip kapat\u0131n.<\/li>\n<li><strong>Test Etme:<\/strong><br \/>\n        <code>\/var\/www\/html\/benimprojem_nginx<\/code> dizinine bir <code>index.php<\/code> dosyas\u0131 olu\u015fturun:<\/p>\n<pre><code>\necho \"&lt;?php phpinfo(); ?&gt;\" | sudo tee \/var\/www\/html\/benimprojem_nginx\/index.php\n        <\/code><\/pre>\n<p>        Taray\u0131c\u0131n\u0131zda <code>http:\/\/benimprojem_nginx.local<\/code> adresine gidin. PHP 8.1 bilgi sayfas\u0131n\u0131 g\u00f6rmelisiniz.<\/li>\n<\/ol>\n<div class=\"uzman-ipucu\">\n  Uzman \u0130pucu: Nginx, statik dosyalar\u0131 do\u011frudan sunarken PHP dosyalar\u0131n\u0131 PHP-FPM&#8217;e y\u00f6nlendirerek daha verimli \u00e7al\u0131\u015f\u0131r. Apache ise <code>.htaccess<\/code> dosyalar\u0131 arac\u0131l\u0131\u011f\u0131yla daha esnek dizin bazl\u0131 yap\u0131land\u0131rma imkanlar\u0131 sunar. Projenizin ihtiya\u00e7lar\u0131na g\u00f6re do\u011fru sunucuyu se\u00e7mek performans\u0131 etkileyebilir.\n<\/div>\n<p>Bu ad\u0131mlarla, se\u00e7ti\u011finiz web sunucusu ile PHP 8.1&#8217;i ba\u015far\u0131yla entegre etmi\u015f oldunuz. Art\u0131k yerel ortam\u0131n\u0131zda PHP uygulamalar\u0131 geli\u015ftirmeye haz\u0131rs\u0131n\u0131z. Her iki sunucu i\u00e7in de sanal hostlar olu\u015fturarak, ayn\u0131 Ubuntu sistemi \u00fczerinde birden fazla PHP projesini izole bir \u015fekilde \u00e7al\u0131\u015ft\u0131rabilirsiniz. Bu esneklik, \u00f6zellikle birden fazla proje \u00fczerinde \u00e7al\u0131\u015fan geli\u015ftiriciler i\u00e7in paha bi\u00e7ilmezdir.<\/p>\n<h2>Veritaban\u0131 Y\u00f6netimi: MySQL veya PostgreSQL Kurulumu ve PHP ile Ba\u011flant\u0131 Nas\u0131l Sa\u011flan\u0131r?<\/h2>\n<p>Her dinamik web uygulamas\u0131n\u0131n kalbinde bir veritaban\u0131 bulunur. Kullan\u0131c\u0131 bilgileri, \u00fcr\u00fcn kataloglar\u0131, sipari\u015f detaylar\u0131 ve daha fazlas\u0131 gibi t\u00fcm kritik veriler veritabanlar\u0131nda saklan\u0131r. PHP ile geli\u015ftirme yaparken en s\u0131k kullan\u0131lan veritabanlar\u0131 MySQL (veya onun a\u00e7\u0131k kaynakl\u0131 bir \u00e7atal\u0131 olan MariaDB) ve PostgreSQL&#8217;dir. Her ikisi de g\u00fc\u00e7l\u00fc ve g\u00fcvenilirdir, ancak farkl\u0131 senaryolar i\u00e7in farkl\u0131 avantajlar sunarlar. Bu b\u00f6l\u00fcmde, her iki veritaban\u0131n\u0131 da Ubuntu&#8217;ya nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 ve PHP uygulamalar\u0131n\u0131zla nas\u0131l ba\u011flant\u0131 kuraca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m inceleyece\u011fiz.<\/p>\n<h4>MySQL\/MariaDB Kurulumu ve Yap\u0131land\u0131rmas\u0131<\/h4>\n<p>MySQL, web uygulamalar\u0131 i\u00e7in en pop\u00fcler ili\u015fkisel veritaban\u0131 y\u00f6netim sistemlerinden biridir. Genellikle LAMP (Linux, Apache, MySQL, PHP) veya LEMP (Linux, Nginx, MySQL, PHP) y\u0131\u011f\u0131nlar\u0131n\u0131n temel bile\u015fenidir. Ubuntu&#8217;da MySQL&#8217;i kurmak olduk\u00e7a basittir.<\/p>\n<ol>\n<li><strong>MySQL Kurulumu:<\/strong><br \/>\n        A\u015fa\u011f\u0131daki komutla MySQL sunucusunu kurun:<\/p>\n<pre><code>\nsudo apt install mysql-server -y\n        <\/code><\/pre>\n<p>        Kurulum s\u0131ras\u0131nda sizden bir root \u015fifresi belirlemeniz istenebilir veya kurulum sonras\u0131 g\u00fcvenlik beti\u011fi arac\u0131l\u0131\u011f\u0131yla bu i\u015flemi yapabilirsiniz.<\/li>\n<li><strong>MySQL G\u00fcvenlik Beti\u011fini \u00c7al\u0131\u015ft\u0131rma:<\/strong><br \/>\n        MySQL kurulumundan sonra, varsay\u0131lan g\u00fcvenlik ayarlar\u0131n\u0131 iyile\u015ftirmek i\u00e7in bir g\u00fcvenlik beti\u011fi \u00e7al\u0131\u015ft\u0131rmak iyi bir uygulamad\u0131r:<\/p>\n<pre><code>\nsudo mysql_secure_installation\n        <\/code><\/pre>\n<p>        Bu betik size bir dizi soru soracakt\u0131r:<\/p>\n<ul>\n<li><code>VALIDATE PASSWORD COMPONENT<\/code>: \u015eifre g\u00fcc\u00fc politikas\u0131. Yerel ortamda &#8220;No&#8221; diyebilirsiniz.<\/li>\n<li>Root \u015fifresi belirleme veya de\u011fi\u015ftirme.<\/li>\n<li>Anonim kullan\u0131c\u0131lar\u0131 kald\u0131rma.<\/li>\n<li>Root kullan\u0131c\u0131s\u0131n\u0131n uzaktan giri\u015f yapmas\u0131n\u0131 engelleme (g\u00fcvenlik i\u00e7in &#8220;Yes&#8221;).<\/li>\n<li>Test veritaban\u0131n\u0131 kald\u0131rma.<\/li>\n<li>Ayr\u0131cal\u0131k tablolar\u0131n\u0131 yeniden y\u00fckleme.<\/li>\n<\/ul>\n<p>        Genellikle t\u00fcm sorulara &#8220;Yes&#8221; (Y) yan\u0131t\u0131n\u0131 vermek, daha g\u00fcvenli bir kurulum sa\u011flayacakt\u0131r.<\/li>\n<li><strong>Veritaban\u0131 ve Kullan\u0131c\u0131 Olu\u015fturma:<\/strong><br \/>\n        Yeni bir PHP projesi i\u00e7in genellikle ayr\u0131 bir veritaban\u0131 ve o veritaban\u0131na eri\u015febilecek bir kullan\u0131c\u0131 olu\u015fturmak en iyi uygulamad\u0131r. MySQL kabu\u011funa root olarak giri\u015f yap\u0131n:<\/p>\n<pre><code>\nsudo mysql -u root -p\n        <\/code><\/pre>\n<p>        \u015eifrenizi girin. Ard\u0131ndan, a\u015fa\u011f\u0131daki komutlar\u0131 kullanarak bir veritaban\u0131 ve kullan\u0131c\u0131 olu\u015fturun. Kendi proje ad\u0131n\u0131za, kullan\u0131c\u0131 ad\u0131n\u0131za ve g\u00fc\u00e7l\u00fc bir \u015fifreye g\u00f6re uyarlamay\u0131 unutmay\u0131n:<\/p>\n<pre><code>\nCREATE DATABASE <code class=\"language-\">benim_proje_db<\/code> CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;\nCREATE USER 'benim_proje_user'@'localhost' IDENTIFIED BY 'GucluSifre123!';\nGRANT ALL PRIVILEGES ON <code class=\"language-\">benim_proje_db<\/code>.* TO 'benim_proje_user'@'localhost';\nFLUSH PRIVILEGES;\nEXIT;\n        <\/code><\/pre>\n<p>        Bu komutlar, <code>benim_proje_db<\/code> ad\u0131nda bir veritaban\u0131 olu\u015fturur, <code>benim_proje_user<\/code> ad\u0131nda bir kullan\u0131c\u0131 tan\u0131mlar ve bu kullan\u0131c\u0131ya yaln\u0131zca <code>benim_proje_db<\/code> \u00fczerindeki t\u00fcm yetkileri verir.<\/li>\n<\/ol>\n<h4>PostgreSQL Kurulumu ve Yap\u0131land\u0131rmas\u0131<\/h4>\n<p>PostgreSQL, geli\u015fmi\u015f \u00f6zellik setleri, ACID uyumlulu\u011fu ve y\u00fcksek performans\u0131yla bilinen, a\u00e7\u0131k kaynakl\u0131, nesne-ili\u015fkisel bir veritaban\u0131 y\u00f6netim sistemidir. \u00d6zellikle karma\u015f\u0131k veri yap\u0131lar\u0131 ve y\u00fcksek veri b\u00fct\u00fcnl\u00fc\u011f\u00fc gerektiren uygulamalar i\u00e7in tercih edilir.<\/p>\n<ol>\n<li><strong>PostgreSQL Kurulumu:<\/strong><br \/>\n        PostgreSQL sunucusunu ve gerekli istemci ara\u00e7lar\u0131n\u0131 kurun:<\/p>\n<pre><code>\nsudo apt install postgresql postgresql-contrib -y\n        <\/code><\/pre>\n<p>        Kurulum tamamland\u0131ktan sonra PostgreSQL servisinin \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olun:<\/p>\n<pre><code>\nsudo systemctl status postgresql\n        <\/code><\/pre>\n<\/li>\n<li><strong>PostgreSQL Veritaban\u0131 ve Kullan\u0131c\u0131 Olu\u015fturma:<\/strong><br \/>\n        PostgreSQL, varsay\u0131lan olarak <code>postgres<\/code> ad\u0131nda bir s\u00fcper kullan\u0131c\u0131 ve ayn\u0131 isimde bir Linux kullan\u0131c\u0131s\u0131 olu\u015fturur. Bu kullan\u0131c\u0131yla veritaban\u0131 i\u015flemlerini ger\u00e7ekle\u015ftirebilirsiniz.<br \/>\n        <code>postgres<\/code> kullan\u0131c\u0131s\u0131na ge\u00e7i\u015f yap\u0131n:<\/p>\n<pre><code>\nsudo -i -u postgres\n        <\/code><\/pre>\n<p>        PostgreSQL kabu\u011funa girin:<\/p>\n<pre><code>\npsql\n        <\/code><\/pre>\n<p>        Yeni bir veritaban\u0131 ve kullan\u0131c\u0131 olu\u015fturun:<\/p>\n<pre><code>\nCREATE DATABASE benim_proje_pg_db;\nCREATE USER benim_proje_pg_user WITH PASSWORD 'GucluPgSifre123!';\nGRANT ALL PRIVILEGES ON DATABASE benim_proje_pg_db TO benim_proje_pg_user;\n\\q\n        <\/code><\/pre>\n<p>        <code>postgres<\/code> kullan\u0131c\u0131s\u0131ndan \u00e7\u0131k\u0131\u015f yap\u0131n:<\/p>\n<pre><code>\nexit\n        <\/code><\/pre>\n<p>        Bu komutlar, <code>benim_proje_pg_db<\/code> ad\u0131nda bir veritaban\u0131 olu\u015fturur ve <code>benim_proje_pg_user<\/code> ad\u0131nda bir kullan\u0131c\u0131 tan\u0131mlay\u0131p ona ilgili veritaban\u0131 \u00fczerinde yetki verir.<\/li>\n<\/ol>\n<h4>PHP ile Veritaban\u0131 Ba\u011flant\u0131s\u0131 Nas\u0131l Sa\u011flan\u0131r?<\/h4>\n<p>Veritabanlar\u0131n\u0131 kurduktan sonra, PHP uygulaman\u0131z\u0131n bu veritabanlar\u0131na ba\u011flanabilmesi i\u00e7in gerekli PHP mod\u00fcllerini kurman\u0131z ve ba\u011flant\u0131 kodunu yazman\u0131z gerekir.<\/p>\n<ol>\n<li><strong>Gerekli PHP Mod\u00fcllerini Kurma:<\/strong><br \/>\n        MySQL i\u00e7in <code>php8.1-mysql<\/code> mod\u00fcl\u00fcn\u00fc zaten kurmu\u015ftuk. PostgreSQL i\u00e7in ise <code>php8.1-pgsql<\/code> mod\u00fcl\u00fcn\u00fc kurmal\u0131y\u0131z:<\/p>\n<pre><code>\nsudo apt install php8.1-pgsql -y\nsudo systemctl restart php8.1-fpm apache2 # veya nginx\n        <\/code><\/pre>\n<p>        Mod\u00fcl\u00fc kurduktan sonra PHP-FPM ve web sunucusunu yeniden ba\u015flatmay\u0131 unutmay\u0131n.<\/li>\n<li><strong>PHP Ba\u011flant\u0131 Kodu \u00d6rnekleri:<\/strong>\n<p><strong>MySQL (PDO ile):<\/strong><\/p>\n<pre><code>\n&lt;?php\n$host = 'localhost';\n$db   = 'benim_proje_db';\n$user = 'benim_proje_user';\n$pass = 'GucluSifre123!';\n$charset = 'utf8mb4';\n\n$dsn = \"mysql:host=$host;dbname=$db;charset=$charset\";\n$options = [\n    PDO::ATTR_ERRMODE            =&gt; PDO::ERRMODE_EXCEPTION,\n    PDO::ATTR_DEFAULT_FETCH_MODE =&gt; PDO::FETCH_ASSOC,\n    PDO::ATTR_EMULATE_PREPARES   =&gt; false,\n];\n\ntry {\n    $pdo = new PDO($dsn, $user, $pass, $options);\n    echo \"MySQL veritaban\u0131na ba\u015far\u0131yla ba\u011flan\u0131ld\u0131!&lt;br&gt;\";\n\n    \/\/ \u00d6rnek sorgu\n    $stmt = $pdo-&gt;query('SELECT VERSION()');\n    $version = $stmt-&gt;fetchColumn();\n    echo \"MySQL S\u00fcr\u00fcm\u00fc: \" . $version;\n\n} catch (\\PDOException $e) {\n    throw new \\PDOException($e-&gt;getMessage(), (int)$e-&gt;getCode());\n}\n?&gt;\n        <\/code><\/pre>\n<p><strong>PostgreSQL (PDO ile):<\/strong><\/p>\n<pre><code>\n&lt;?php\n$host = 'localhost';\n$db   = 'benim_proje_pg_db';\n$user = 'benim_proje_pg_user';\n$pass = 'GucluPgSifre123!';\n\n$dsn = \"pgsql:host=$host;dbname=$db\";\n$options = [\n    PDO::ATTR_ERRMODE            =&gt; PDO::ERRMODE_EXCEPTION,\n    PDO::ATTR_DEFAULT_FETCH_MODE =&gt; PDO::FETCH_ASSOC,\n    PDO::ATTR_EMULATE_PREPARES   =&gt; false,\n];\n\ntry {\n    $pdo = new PDO($dsn, $user, $pass, $options);\n    echo \"PostgreSQL veritaban\u0131na ba\u015far\u0131yla ba\u011flan\u0131ld\u0131!&lt;br&gt;\";\n\n    \/\/ \u00d6rnek sorgu\n    $stmt = $pdo-&gt;query('SELECT version()');\n    $version = $stmt-&gt;fetchColumn();\n    echo \"PostgreSQL S\u00fcr\u00fcm\u00fc: \" . $version;\n\n} catch (\\PDOException $e) {\n    throw new \\PDOException($e-&gt;getMessage(), (int)$e-&gt;getCode());\n}\n?&gt;\n        <\/code><\/pre>\n<p>        Bu kod bloklar\u0131n\u0131 web sunucunuzun eri\u015febilece\u011fi bir PHP dosyas\u0131na (\u00f6rne\u011fin <code>db_test.php<\/code>) kaydedip taray\u0131c\u0131n\u0131zdan \u00e7a\u011f\u0131rarak ba\u011flant\u0131y\u0131 test edebilirsiniz. Ba\u015far\u0131l\u0131 bir ba\u011flant\u0131da, ilgili veritaban\u0131 s\u00fcr\u00fcm\u00fcn\u00fc g\u00f6rmelisiniz.<\/li>\n<\/ol>\n<div class=\"uzman-ipucu\">\n  Uzman \u0130pucu: PDO (PHP Data Objects), farkl\u0131 veritabanlar\u0131 i\u00e7in tek tip bir aray\u00fcz sunar. Bu, veritaban\u0131 de\u011fi\u015ftirmeniz gerekti\u011finde kodunuzda daha az de\u011fi\u015fiklik yapman\u0131z\u0131 sa\u011flar ve SQL enjeksiyonu gibi g\u00fcvenlik a\u00e7\u0131klar\u0131na kar\u015f\u0131 koruma sa\u011flar. Her zaman PDO kullanmay\u0131 tercih edin!\n<\/div>\n<p><strong>Vaka Analizi: B\u00fcy\u00fck Bir Veri Setine Sahip Uygulaman\u0131n Performans Optimizasyonunda Do\u011fru Veritaban\u0131 Se\u00e7imi<\/strong><\/p>\n<p>Bir finansal analiz platformu geli\u015ftiren tak\u0131m, ba\u015flang\u0131\u00e7ta MySQL kullan\u0131yordu. Ancak, platform b\u00fcy\u00fcd\u00fck\u00e7e ve milyarlarca finansal i\u015flem verisi depolamaya ba\u015flad\u0131k\u00e7a, karma\u015f\u0131k analitik sorgular\u0131n performans\u0131 d\u00fc\u015fmeye ba\u015flad\u0131. \u00d6zellikle b\u00fcy\u00fck veri setleri \u00fczerinde yap\u0131lan birle\u015fim (join) i\u015flemleri ve geli\u015fmi\u015f indeksleme ihtiya\u00e7lar\u0131, MySQL&#8217;in zay\u0131f kald\u0131\u011f\u0131 noktalar haline geldi. Tak\u0131m, PostgreSQL&#8217;in daha geli\u015fmi\u015f indeksleme se\u00e7enekleri (\u00f6rne\u011fin, k\u0131smi indeksler, ifade indeksleri) ve daha sofistike sorgu optimizasyon yetenekleri nedeniyle PostgreSQL&#8217;e ge\u00e7i\u015f yapmaya karar verdi. Ge\u00e7i\u015f sonras\u0131, \u00f6zellikle zaman serisi verileri ve \u00e7ok boyutlu analizler i\u00e7eren sorgularda %30-40&#8217;l\u0131k bir performans art\u0131\u015f\u0131 g\u00f6zlemlediler. Bu durum, projenin \u00f6l\u00e7e\u011fi ve veri yap\u0131s\u0131 g\u00f6z \u00f6n\u00fcne al\u0131nd\u0131\u011f\u0131nda, do\u011fru veritaban\u0131 se\u00e7iminin sadece kurulumdan ibaret olmad\u0131\u011f\u0131n\u0131, ayn\u0131 zamanda uzun vadeli performans ve s\u00fcrd\u00fcr\u00fclebilirlik a\u00e7\u0131s\u0131ndan kritik oldu\u011funu g\u00f6sterdi.<\/p>\n<p>Bu b\u00f6l\u00fcmle birlikte, PHP 8.1 geli\u015ftirme ortam\u0131n\u0131z\u0131n temel ta\u015flar\u0131 olan web sunucusu ve veritaban\u0131 kurulumlar\u0131n\u0131 tamamlam\u0131\u015f oldunuz. Art\u0131k dinamik web uygulamalar\u0131 geli\u015ftirmek i\u00e7in sa\u011flam bir altyap\u0131ya sahipsiniz. Bir sonraki ad\u0131mda, geli\u015ftirme s\u00fcrecinizi daha verimli hale getirecek ara\u00e7lara odaklanaca\u011f\u0131z.<\/p>\n<h2>Geli\u015ftirme Ortam\u0131n\u0131 Zenginle\u015ftirme: Composer, Xdebug ve Di\u011fer Ara\u00e7lar Nelerdir?<\/h2>\n<p>Temel PHP 8.1, web sunucusu ve veritaban\u0131 kurulumlar\u0131n\u0131 tamamlad\u0131k. Ancak modern PHP geli\u015ftirme, sadece bu temel bile\u015fenlerden ibaret de\u011fildir. Geli\u015ftirme s\u00fcrecini h\u0131zland\u0131rmak, kod kalitesini art\u0131rmak ve hata ay\u0131klama s\u00fcre\u00e7lerini kolayla\u015ft\u0131rmak i\u00e7in bir dizi yard\u0131mc\u0131 araca ihtiyac\u0131m\u0131z var. Bu b\u00f6l\u00fcmde, PHP ekosisteminin vazge\u00e7ilmezleri olan Composer ve Xdebug&#8217;\u0131 nas\u0131l kurup yap\u0131land\u0131raca\u011f\u0131n\u0131z\u0131, ayr\u0131ca geli\u015ftirme deneyiminizi daha da zenginle\u015ftirecek di\u011fer ara\u00e7lar\u0131 ele alaca\u011f\u0131z.<\/p>\n<h4>Composer Kurulumu ve Kullan\u0131m\u0131: Ba\u011f\u0131ml\u0131l\u0131k Y\u00f6netimi<\/h4>\n<p>Composer, PHP i\u00e7in bir ba\u011f\u0131ml\u0131l\u0131k y\u00f6neticisidir. Projenizin ihtiya\u00e7 duydu\u011fu k\u00fct\u00fcphaneleri ve paketleri indirmenizi, g\u00fcncellemenizi ve y\u00f6netmenizi sa\u011flar. Modern PHP \u00e7er\u00e7eveleri (Laravel, Symfony) ve bir\u00e7ok k\u00fct\u00fcphane Composer olmadan kullan\u0131lamaz. Bu nedenle, Composer&#8217;\u0131n kurulumu ve kullan\u0131m\u0131, g\u00fcn\u00fcm\u00fcz PHP geli\u015ftirme prati\u011finin temel bir par\u00e7as\u0131d\u0131r.<\/p>\n<ol>\n<li><strong>Composer Kurulumu:<\/strong><br \/>\n        Composer&#8217;\u0131 Ubuntu&#8217;ya kurman\u0131n en g\u00fcvenli yolu, resmi web sitesinden indirilen bir betik kullanmakt\u0131r. Terminalde a\u015fa\u011f\u0131daki komutlar\u0131 \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code>\nphp -r \"copy('https:\/\/getcomposer.org\/installer', 'composer-setup.php');\"\nphp composer-setup.php\nphp -r \"unlink('composer-setup.php');\"\nsudo mv composer.phar \/usr\/local\/bin\/composer\n        <\/code><\/pre>\n<p>        Bu komutlar s\u0131ras\u0131yla:<\/p>\n<ul>\n<li>Composer y\u00fckleyici beti\u011fini indirir.<\/li>\n<li>\u0130ndirilen beti\u011fi \u00e7al\u0131\u015ft\u0131rarak <code>composer.phar<\/code> dosyas\u0131n\u0131 olu\u015fturur.<\/li>\n<li>Y\u00fckleyici beti\u011fini siler.<\/li>\n<li><code>composer.phar<\/code> dosyas\u0131n\u0131 sisteminize genel olarak eri\u015filebilir hale getirmek i\u00e7in <code>\/usr\/local\/bin\/composer<\/code> konumuna ta\u015f\u0131r.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Composer Kurulumunu Do\u011frulama:<\/strong><br \/>\n        Composer&#8217;\u0131n do\u011fru bir \u015fekilde kurulup kurulmad\u0131\u011f\u0131n\u0131 kontrol etmek i\u00e7in a\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code>\ncomposer -v\n        <\/code><\/pre>\n<p>        \u00c7\u0131kt\u0131da Composer s\u00fcr\u00fcm\u00fcn\u00fc g\u00f6rmelisiniz.<\/li>\n<li><strong>Composer Kullan\u0131m\u0131 (\u00d6rnek):<\/strong><br \/>\n        Yeni bir proje dizini olu\u015fturup i\u00e7ine pop\u00fcler bir k\u00fct\u00fcphane olan Monolog&#8217;u (bir loglama k\u00fct\u00fcphanesi) ekleyelim:<\/p>\n<pre><code>\nmkdir benim_composer_projem\ncd benim_composer_projem\ncomposer require monolog\/monolog\n        <\/code><\/pre>\n<p>        Bu komut, <code>monolog\/monolog<\/code> paketini projenize indirir, <code>vendor\/<\/code> dizinini olu\u015fturur ve <code>composer.json<\/code> ile <code>composer.lock<\/code> dosyalar\u0131n\u0131 g\u00fcnceller. Daha sonra PHP kodunuzda <code>require 'vendor\/autoload.php';<\/code> sat\u0131r\u0131n\u0131 ekleyerek bu k\u00fct\u00fcphaneyi kullanabilirsiniz.<\/li>\n<\/ol>\n<h4>Xdebug Kurulumu ve Yap\u0131land\u0131rmas\u0131: Hata Ay\u0131klama ve Profil Olu\u015fturma<\/h4>\n<p>Xdebug, PHP geli\u015ftiricileri i\u00e7in vazge\u00e7ilmez bir hata ay\u0131klama ve profil olu\u015fturma arac\u0131d\u0131r. Kodunuzdaki hatalar\u0131 ad\u0131m ad\u0131m izlemenizi, de\u011fi\u015fkenlerin de\u011ferlerini incelemenizi ve performans darbo\u011fazlar\u0131n\u0131 tespit etmenizi sa\u011flar. Bu, \u00f6zellikle karma\u015f\u0131k uygulamalarda zaman tasarrufu sa\u011flar.<\/p>\n<ol>\n<li><strong>Xdebug Kurulumu:<\/strong><br \/>\n        Xdebug&#8217;\u0131 PHP 8.1 i\u00e7in a\u015fa\u011f\u0131daki komutla kurabilirsiniz:<\/p>\n<pre><code>\nsudo apt install php8.1-xdebug -y\nsudo systemctl restart php8.1-fpm apache2 # veya nginx\n        <\/code><\/pre>\n<p>        Kurulumdan sonra web sunucunuzu yeniden ba\u015flatmay\u0131 unutmay\u0131n.<\/li>\n<li><strong>Xdebug Yap\u0131land\u0131rmas\u0131:<\/strong><br \/>\n        Xdebug&#8217;\u0131n \u00e7al\u0131\u015fmas\u0131 i\u00e7in <code>php.ini<\/code> dosyas\u0131nda yap\u0131land\u0131rma yapmam\u0131z gerekir. PHP 8.1 i\u00e7in bu dosya genellikle <code>\/etc\/php\/8.1\/mods-available\/xdebug.ini<\/code> konumundad\u0131r.<\/p>\n<pre><code>\nsudo nano \/etc\/php\/8.1\/mods-available\/xdebug.ini\n        <\/code><\/pre>\n<p>        Dosyan\u0131n i\u00e7ine a\u015fa\u011f\u0131daki sat\u0131rlar\u0131 ekleyin veya mevcut sat\u0131rlar\u0131 d\u00fczenleyin:<\/p>\n<pre><code>\nzend_extension=xdebug.so\nxdebug.mode=develop,debug\nxdebug.start_with_request=yes\nxdebug.client_host=127.0.0.1\nxdebug.client_port=9003\nxdebug.log=\/tmp\/xdebug.log\n        <\/code><\/pre>\n<p>        A\u00e7\u0131klamalar:<\/p>\n<ul>\n<li><code>zend_extension=xdebug.so<\/code>: Xdebug mod\u00fcl\u00fcn\u00fc etkinle\u015ftirir.<\/li>\n<li><code>xdebug.mode=develop,debug<\/code>: Geli\u015ftirme ve hata ay\u0131klama modlar\u0131n\u0131 a\u00e7ar. Di\u011fer modlar aras\u0131nda <code>profile<\/code> (performans analizi i\u00e7in) ve <code>trace<\/code> (fonksiyon \u00e7a\u011fr\u0131 izi i\u00e7in) bulunur.<\/li>\n<li><code>xdebug.start_with_request=yes<\/code>: Her istekte Xdebug&#8217;\u0131n otomatik olarak ba\u015flamas\u0131n\u0131 sa\u011flar. Alternatif olarak, taray\u0131c\u0131 eklentileriyle (Xdebug Helper) belirli isteklerde ba\u015flatabilirsiniz.<\/li>\n<li><code>xdebug.client_host<\/code> ve <code>xdebug.client_port<\/code>: Xdebug&#8217;\u0131n IDE&#8217;nizle ileti\u015fim kuraca\u011f\u0131 IP adresi ve portu belirler. Genellikle varsay\u0131lan de\u011ferler yeterlidir.<\/li>\n<li><code>xdebug.log<\/code>: Xdebug&#8217;\u0131n hata ay\u0131klama g\u00fcnl\u00fcklerini kaydetti\u011fi yer. Sorun giderme i\u00e7in faydal\u0131d\u0131r.<\/li>\n<\/ul>\n<p>        De\u011fi\u015fiklikleri kaydedip \u00e7\u0131kt\u0131ktan sonra, PHP-FPM ve web sunucunuzu tekrar yeniden ba\u015flat\u0131n:<\/p>\n<pre><code>\nsudo systemctl restart php8.1-fpm apache2 # veya nginx\n        <\/code><\/pre>\n<\/li>\n<li><strong>IDE Entegrasyonu (VS Code \u00d6rne\u011fi):<\/strong><br \/>\n        Xdebug&#8217;\u0131 kullanabilmek i\u00e7in bir IDE (Entegre Geli\u015ftirme Ortam\u0131) gerekir. VS Code, pop\u00fcler ve \u00fccretsiz bir se\u00e7enektir.<\/p>\n<ul>\n<li>VS Code&#8217;a &#8220;PHP Debug&#8221; eklentisini kurun.<\/li>\n<li>Projenizin k\u00f6k dizininde bir <code>.vscode\/launch.json<\/code> dosyas\u0131 olu\u015fturun.<\/li>\n<li><code>launch.json<\/code> i\u00e7ine a\u015fa\u011f\u0131daki yap\u0131land\u0131rmay\u0131 ekleyin:\n<pre><code>\n{\n    \"version\": \"0.2.0\",\n    \"configurations\": [\n        {\n            \"name\": \"Listen for Xdebug\",\n            \"type\": \"php\",\n            \"request\": \"launch\",\n            \"port\": 9003\n        },\n        {\n            \"name\": \"Launch currently open script\",\n            \"type\": \"php\",\n            \"request\": \"launch\",\n            \"program\": \"${file}\",\n            \"cwd\": \"${workspaceRoot}\",\n            \"port\": 9003\n        }\n    ]\n}\n                <\/code><\/pre>\n<\/li>\n<li>VS Code&#8217;da Hata Ay\u0131klama (Debug) g\u00f6r\u00fcn\u00fcm\u00fcne ge\u00e7in (Ctrl+Shift+D). &#8220;Listen for Xdebug&#8221; se\u00e7ene\u011fini se\u00e7ip ba\u015flat\u0131n (ye\u015fil \u00fc\u00e7gen ikon).<\/li>\n<li>PHP kodunuzda bir kesme noktas\u0131 (breakpoint) belirleyin ve taray\u0131c\u0131n\u0131zdan uygulaman\u0131za eri\u015fin. Kodunuzun kesme noktas\u0131nda durdu\u011funu ve de\u011fi\u015fkenleri inceleyebildi\u011finizi g\u00f6rmelisiniz.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<h4>Di\u011fer Faydal\u0131 Ara\u00e7lar<\/h4>\n<ul>\n<li><strong>phpMyAdmin\/Adminer:<\/strong> Veritabanlar\u0131n\u0131z\u0131 web aray\u00fcz\u00fc \u00fczerinden y\u00f6netmek i\u00e7in phpMyAdmin (daha kapsaml\u0131) veya Adminer (daha hafif) kurabilirsiniz. Bu ara\u00e7lar, veritaban\u0131 tablolar\u0131n\u0131 g\u00f6r\u00fcnt\u00fcleme, sorgu \u00e7al\u0131\u015ft\u0131rma ve veri giri\u015fi gibi i\u015flemleri kolayla\u015ft\u0131r\u0131r.<\/li>\n<li><strong>Git:<\/strong> Versiyon kontrol sistemi olarak Git, her geli\u015ftiricinin olmazsa olmaz\u0131d\u0131r. Kod de\u011fi\u015fikliklerini takip etmek, farkl\u0131 s\u00fcr\u00fcmler aras\u0131nda ge\u00e7i\u015f yapmak ve tak\u0131m halinde \u00e7al\u0131\u015fmak i\u00e7in kullan\u0131l\u0131r. Ubuntu&#8217;da <code>sudo apt install git -y<\/code> komutuyla kolayca kurulabilir.<\/li>\n<li><strong>IDE\/Metin D\u00fczenleyici:<\/strong> VS Code&#8217;un yan\u0131 s\u0131ra PhpStorm (\u00fccretli, profesyonel) veya Sublime Text gibi g\u00fc\u00e7l\u00fc IDE&#8217;ler veya metin d\u00fczenleyiciler, kod yazma deneyiminizi geli\u015ftiren \u00f6zellikler (otomatik tamamlama, s\u00f6zdizimi vurgulama, kod analizi) sunar.<\/li>\n<\/ul>\n<div class=\"uzman-ipucu\">\n  Uzman \u0130pucu: Xdebug&#8217;\u0131 sadece hata ay\u0131klama yapaca\u011f\u0131n\u0131z zaman aktif hale getirin. S\u00fcrekli a\u00e7\u0131k kalmas\u0131, uygulaman\u0131z\u0131n performans\u0131n\u0131 d\u00fc\u015f\u00fcrebilir. <code>xdebug.mode=off<\/code> ile kapat\u0131p gerekti\u011finde <code>debug<\/code> veya <code>profile<\/code> moduna alabilirsiniz.\n<\/div>\n<p>Bu ara\u00e7lar, PHP geli\u015ftirme ortam\u0131n\u0131z\u0131 sadece i\u015flevsel de\u011fil, ayn\u0131 zamanda verimli ve keyifli hale getirecektir. Composer ile ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131z\u0131 kolayca y\u00f6netirken, Xdebug ile hatalar\u0131 h\u0131zla ay\u0131klayabilir ve performans sorunlar\u0131n\u0131 tespit edebilirsiniz. Di\u011fer yard\u0131mc\u0131 ara\u00e7lar ise genel geli\u015ftirme ak\u0131\u015f\u0131n\u0131z\u0131 optimize etmenize yard\u0131mc\u0131 olacakt\u0131r. Art\u0131k modern bir PHP geli\u015ftirme ortam\u0131na tam anlam\u0131yla sahipsiniz.<\/p>\n<h2>Performans ve G\u00fcvenlik \u0130pu\u00e7lar\u0131: Yerel Ortam\u0131n\u0131z\u0131 Nas\u0131l Optimize Edersiniz?<\/h2>\n<p>Yerel geli\u015ftirme ortam\u0131n\u0131z\u0131 kurmak harika bir ba\u015flang\u0131\u00e7t\u0131r, ancak en iyi performans\u0131 ve g\u00fcvenli\u011fi sa\u011flamak i\u00e7in baz\u0131 ek optimizasyonlar ve iyi uygulamalar uygulamak \u00f6nemlidir. Bu b\u00f6l\u00fcmde, PHP 8.1 kurulumunuzu daha h\u0131zl\u0131 ve daha g\u00fcvenli hale getirmek i\u00e7in kullanabilece\u011finiz ipu\u00e7lar\u0131n\u0131 ve p\u00fcf noktalar\u0131n\u0131 inceleyece\u011fiz. Bu optimizasyonlar, canl\u0131 sunucu ortamlar\u0131nda da benzer faydalar sa\u011flayacak prensiplere dayan\u0131r, bu nedenle yerel ortam\u0131n\u0131zda pratik yapmak, gelecekteki da\u011f\u0131t\u0131mlar\u0131n\u0131z i\u00e7in de size yol g\u00f6sterecektir.<\/p>\n<h4>OPcache Kullan\u0131m\u0131 ve Yap\u0131land\u0131rmas\u0131<\/h4>\n<p>OPcache, PHP&#8217;nin performans\u0131n\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131ran bir mod\u00fcld\u00fcr. PHP betikleri her istekte derlenmek yerine, derlenmi\u015f kodu bellekte \u00f6nbelle\u011fe alarak sonraki isteklerde do\u011frudan bu \u00f6nbelle\u011fi kullan\u0131r. Bu, \u00f6zellikle b\u00fcy\u00fck ve karma\u015f\u0131k PHP uygulamalar\u0131nda sayfa y\u00fckleme s\u00fcrelerini ve sunucu y\u00fck\u00fcn\u00fc azalt\u0131r.<\/p>\n<p>PHP 8.1 ile OPcache genellikle varsay\u0131lan olarak etkindir ve yukar\u0131daki kurulum ad\u0131mlar\u0131nda <code>php8.1-opcache<\/code> paketini zaten kurmu\u015ftuk. Ancak, performans\u0131n\u0131 daha da optimize etmek i\u00e7in yap\u0131land\u0131rma ayarlar\u0131n\u0131 kontrol edebilir ve de\u011fi\u015ftirebilirsiniz. OPcache yap\u0131land\u0131rma dosyas\u0131 genellikle <code>\/etc\/php\/8.1\/fpm\/conf.d\/10-opcache.ini<\/code> veya <code>\/etc\/php\/8.1\/cli\/conf.d\/10-opcache.ini<\/code> (CLI i\u00e7in) konumundad\u0131r.<\/p>\n<pre><code>\nsudo nano \/etc\/php\/8.1\/fpm\/conf.d\/10-opcache.ini\n<\/code><\/pre>\n<p>\u0130\u015fte baz\u0131 \u00f6nerilen OPcache ayarlar\u0131:<\/p>\n<pre><code>\nopcache.enable=1\nopcache.memory_consumption=128\nopcache.interned_strings_buffer=8\nopcache.max_accelerated_files=10000\nopcache.revalidate_freq=0\nopcache.validate_timestamps=0\nopcache.fast_shutdown=1\n<\/code><\/pre>\n<ul>\n<li><code>opcache.enable=1<\/code>: OPcache&#8217;i etkinle\u015ftirir.<\/li>\n<li><code>opcache.memory_consumption=128<\/code>: \u00d6nbellek i\u00e7in ayr\u0131lan belle\u011fi (MB cinsinden) ayarlar. Projenizin b\u00fcy\u00fckl\u00fc\u011f\u00fcne g\u00f6re bu de\u011feri art\u0131rabilirsiniz.<\/li>\n<li><code>opcache.interned_strings_buffer=8<\/code>: Dahili dizeler i\u00e7in kullan\u0131lan belle\u011fi ayarlar.<\/li>\n<li><code>opcache.max_accelerated_files=10000<\/code>: \u00d6nbelle\u011fe al\u0131nabilecek maksimum dosya say\u0131s\u0131n\u0131 belirler. B\u00fcy\u00fck projeler i\u00e7in bu de\u011feri art\u0131rmak faydal\u0131 olabilir.<\/li>\n<li><code>opcache.revalidate_freq=0<\/code> ve <code>opcache.validate_timestamps=0<\/code>: Bu ayarlar, OPcache&#8217;in dosyalardaki de\u011fi\u015fiklikleri kontrol etme s\u0131kl\u0131\u011f\u0131n\u0131 belirler. Geli\u015ftirme ortam\u0131nda, kod de\u011fi\u015fikliklerinizin an\u0131nda yans\u0131mas\u0131 i\u00e7in <code>revalidate_freq<\/code> de\u011ferini <code>1<\/code> veya <code>2<\/code> (saniye cinsinden) olarak ayarlayabilirsiniz. Canl\u0131 ortamda ise performans\u0131 art\u0131rmak i\u00e7in <code>0<\/code> olarak b\u0131rakmak ve kod da\u011f\u0131t\u0131m\u0131 sonras\u0131 OPcache&#8217;i manuel olarak temizlemek daha iyidir.<\/li>\n<li><code>opcache.fast_shutdown=1<\/code>: H\u0131zl\u0131 kapanma dizisi kullanarak performans\u0131 art\u0131r\u0131r.<\/li>\n<\/ul>\n<p>De\u011fi\u015fiklikleri yapt\u0131ktan sonra PHP-FPM servisini yeniden ba\u015flatmay\u0131 unutmay\u0131n:<\/p>\n<pre><code>\nsudo systemctl restart php8.1-fpm\n<\/code><\/pre>\n<h4>PHP-FPM Ayarlar\u0131n\u0131 Optimize Etme<\/h4>\n<p>PHP-FPM, PHP betiklerini \u00e7al\u0131\u015ft\u0131ran bir i\u015flem y\u00f6neticisidir. Performans\u0131n\u0131 optimize etmek i\u00e7in baz\u0131 ayarlar\u0131n\u0131 d\u00fczenleyebilirsiniz. Bu ayarlar, genellikle <code>\/etc\/php\/8.1\/fpm\/pool.d\/www.conf<\/code> dosyas\u0131nda bulunur.<\/p>\n<pre><code>\nsudo nano \/etc\/php\/8.1\/fpm\/pool.d\/www.conf\n<\/code><\/pre>\n<p>\u00d6nemli ayarlar \u015funlard\u0131r:<\/p>\n<ul>\n<li><code>pm = dynamic<\/code>: \u0130\u015flem y\u00f6neticisi modunu belirler. <code>dynamic<\/code> (dinamik) veya <code>ondemand<\/code> (iste\u011fe ba\u011fl\u0131) \u00e7o\u011fu geli\u015ftirme ortam\u0131 i\u00e7in uygundur. <code>static<\/code> (statik) ise y\u00fcksek trafikli canl\u0131 sunucular i\u00e7in daha iyidir.<\/li>\n<li><code>pm.max_children<\/code>: Olu\u015fturulabilecek maksimum \u00e7ocuk i\u015flem say\u0131s\u0131.<\/li>\n<li><code>pm.start_servers<\/code>: Ba\u015flang\u0131\u00e7ta olu\u015fturulan sunucu i\u015flem say\u0131s\u0131.<\/li>\n<li><code>pm.min_spare_servers<\/code>: Minimum bo\u015fta bekleyen sunucu i\u015flem say\u0131s\u0131.<\/li>\n<li><code>pm.max_spare_servers<\/code>: Maksimum bo\u015fta bekleyen sunucu i\u015flem say\u0131s\u0131.<\/li>\n<\/ul>\n<p>Bu de\u011ferleri, sisteminizin kaynaklar\u0131na (RAM) ve ayn\u0131 anda ka\u00e7 iste\u011fi i\u015flemeniz gerekti\u011fine g\u00f6re ayarlamal\u0131s\u0131n\u0131z. A\u015f\u0131r\u0131ya ka\u00e7mak bellek t\u00fcketimine yol a\u00e7abilir, \u00e7ok d\u00fc\u015f\u00fck tutmak ise performans\u0131 d\u00fc\u015f\u00fcrebilir. Yerel ortamda, genellikle varsay\u0131lan de\u011ferler yeterlidir, ancak performans sorunlar\u0131 ya\u015f\u0131yorsan\u0131z bu de\u011ferleri art\u0131rmay\u0131 d\u00fc\u015f\u00fcnebilirsiniz.<\/p>\n<pre><code>\nsudo systemctl restart php8.1-fpm\n<\/code><\/pre>\n<h4>G\u00fcvenlik Best Practices: \u0130zinler ve \u015eifreler<\/h4>\n<p>Yerel geli\u015ftirme ortam\u0131 olsa bile g\u00fcvenlik her zaman \u00f6nemlidir. \u00d6zellikle ileride canl\u0131ya almay\u0131 d\u00fc\u015f\u00fcnd\u00fc\u011f\u00fcn\u00fcz bir proje \u00fczerinde \u00e7al\u0131\u015f\u0131yorsan\u0131z, g\u00fcvenli al\u0131\u015fkanl\u0131klar edinmek faydal\u0131d\u0131r.<\/p>\n<ul>\n<li><strong>Dosya ve Dizin \u0130zinleri:<\/strong> Web sunucunuzun sadece ihtiya\u00e7 duydu\u011fu dosyalara yazma izni oldu\u011fundan emin olun. Genellikle, web dizinlerinin sahibi web sunucusu kullan\u0131c\u0131s\u0131 (\u00f6rne\u011fin <code>www-data<\/code>) olmal\u0131 ve izinler <code>755<\/code> (dizinler) ve <code>644<\/code> (dosyalar) \u015feklinde ayarlanmal\u0131d\u0131r. Y\u00fckleme dizinleri veya cache dizinleri gibi yazma izni gerektiren yerler i\u00e7in <code>775<\/code> veya <code>777<\/code> (sadece yerel ortamda ve dikkatlice) kullan\u0131labilir, ancak canl\u0131 ortamda <code>775<\/code> ve do\u011fru kullan\u0131c\u0131\/grup sahipli\u011fi tercih edilmelidir.\n<pre><code>\nsudo chown -R www-data:www-data \/var\/www\/html\/benimprojem\nsudo find \/var\/www\/html\/benimprojem -type d -exec chmod 755 {} \\;\nsudo find \/var\/www\/html\/benimprojem -type f -exec chmod 644 {} \\;\n        <\/code><\/pre>\n<\/li>\n<li><strong>G\u00fc\u00e7l\u00fc \u015eifreler:<\/strong> Veritaban\u0131 kullan\u0131c\u0131lar\u0131n\u0131z, SSH eri\u015fiminiz ve di\u011fer hizmetleriniz i\u00e7in her zaman g\u00fc\u00e7l\u00fc ve benzersiz \u015fifreler kullan\u0131n. Yerel ortamda bile &#8220;password&#8221; veya &#8220;123456&#8221; gibi zay\u0131f \u015fifrelerden ka\u00e7\u0131n\u0131n.<\/li>\n<li><strong>Gereksiz Servisleri Kapatma:<\/strong> Kullanmad\u0131\u011f\u0131n\u0131z servisleri (\u00f6rne\u011fin, birden fazla veritaban\u0131 sunucusu) kapatarak sistem kaynaklar\u0131n\u0131 serbest b\u0131rak\u0131n ve potansiyel g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 azalt\u0131n.<\/li>\n<\/ul>\n<h4>HTTPS Yerel Ortamda Nas\u0131l Kurulur (Self-Signed Sertifika)<\/h4>\n<p>Modern web uygulamalar\u0131 genellikle HTTPS \u00fczerinden \u00e7al\u0131\u015f\u0131r. Yerel ortam\u0131n\u0131zda da HTTPS kullanarak, canl\u0131 ortamdaki davran\u0131\u015flar\u0131 daha do\u011fru bir \u015fekilde taklit edebilir ve g\u00fcvenlik sorunlar\u0131n\u0131 \u00f6nceden tespit edebilirsiniz. Yerel ortamda genellikle &#8220;self-signed&#8221; (kendinden imzal\u0131) sertifikalar kullan\u0131l\u0131r.<\/p>\n<p>A\u015fa\u011f\u0131daki ad\u0131mlar, Apache i\u00e7in self-signed bir SSL sertifikas\u0131 olu\u015fturmay\u0131 ve yap\u0131land\u0131rmay\u0131 g\u00f6sterir:<\/p>\n<ol>\n<li><strong>SSL Mod\u00fcl\u00fcn\u00fc Etkinle\u015ftirme:<\/strong>\n<pre><code>\nsudo a2enmod ssl\nsudo systemctl restart apache2\n        <\/code><\/pre>\n<\/li>\n<li><strong>Kendinden \u0130mzal\u0131 Sertifika Olu\u015fturma:<\/strong>\n<pre><code>\nsudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout \/etc\/ssl\/private\/apache-selfsigned.key -out \/etc\/ssl\/certs\/apache-selfsigned.crt\n        <\/code><\/pre>\n<p>        Bu komut, size bir dizi soru soracakt\u0131r (\u00fclke, \u015fehir, organizasyon ad\u0131 vb.). <code>Common Name<\/code> (Ortak Ad) alan\u0131na sanal host&#8217;unuzun ad\u0131n\u0131 (\u00f6rn. <code>benimprojem.local<\/code>) girmeniz \u00f6nemlidir.<\/li>\n<li><strong>Sanal Host&#8217;u HTTPS i\u00e7in Yap\u0131land\u0131rma:<\/strong><br \/>\n        Mevcut sanal host yap\u0131land\u0131rma dosyan\u0131z\u0131 (\u00f6rne\u011fin <code>\/etc\/apache2\/sites-available\/benimprojem.local.conf<\/code>) d\u00fczenleyin ve <code>&lt;VirtualHost *:443&gt;<\/code> blo\u011funu ekleyin:<\/p>\n<pre><code>\n&lt;VirtualHost *:80&gt;\n    ServerName benimprojem.local\n    Redirect permanent \/ https:\/\/benimprojem.local\/\n&lt;\/VirtualHost&gt;\n\n&lt;VirtualHost *:443&gt;\n    ServerAdmin webmaster@localhost\n    ServerName benimprojem.local\n    DocumentRoot \/var\/www\/html\/benimprojem\n\n    &lt;Directory \/var\/www\/html\/benimprojem&gt;\n        Options Indexes FollowSymLinks\n        AllowOverride All\n        Require all granted\n    &lt;\/Directory&gt;\n\n    ErrorLog ${APACHE_LOG_DIR}\/benimprojem.local_error.log\n    CustomLog ${APACHE_LOG_DIR}\/benimprojem.local_access.log combined\n\n    &lt;FilesMatch \\.php$&gt;\n        SetHandler \"proxy:unix:\/run\/php\/php8.1-fpm.sock|fcgi:\/\/localhost\/\"\n    &lt;\/FilesMatch&gt;\n\n    SSLEngine on\n    SSLCertificateFile \/etc\/ssl\/certs\/apache-selfsigned.crt\n    SSLCertificateKeyFile \/etc\/ssl\/private\/apache-selfsigned.key\n&lt;\/VirtualHost&gt;\n        <\/code><\/pre>\n<p>        Bu yap\u0131land\u0131rma, HTTP isteklerini HTTPS&#8217;ye y\u00f6nlendirir ve HTTPS i\u00e7in gerekli sertifika yollar\u0131n\u0131 belirtir.<\/li>\n<li><strong>Apache&#8217;yi Yeniden Ba\u015flatma:<\/strong>\n<pre><code>\nsudo systemctl reload apache2\n        <\/code><\/pre>\n<p>        Taray\u0131c\u0131n\u0131zda <code>https:\/\/benimprojem.local<\/code> adresine gitti\u011finizde, taray\u0131c\u0131n\u0131z sertifikay\u0131 g\u00fcvenilir bulmad\u0131\u011f\u0131 i\u00e7in bir uyar\u0131 g\u00f6sterecektir. Bu normaldir, \u00e7\u00fcnk\u00fc sertifika kendiniz taraf\u0131ndan imzalanm\u0131\u015ft\u0131r. G\u00fcvenli\u011fi kabul ederek devam edebilirsiniz.<\/li>\n<\/ol>\n<div class=\"uzman-ipucu\">\n  Uzman \u0130pucu: Yerel ortamda performans testleri yaparken, OPcache&#8217;i tam olarak etkinle\u015ftirin (<code>opcache.revalidate_freq=0<\/code>) ve Xdebug&#8217;\u0131 devre d\u0131\u015f\u0131 b\u0131rak\u0131n. Bu, canl\u0131 ortamdaki performans\u0131 daha do\u011fru bir \u015fekilde taklit etmenizi sa\u011flar.\n<\/div>\n<p>Bu performans ve g\u00fcvenlik ipu\u00e7lar\u0131, yerel geli\u015ftirme ortam\u0131n\u0131z\u0131n sadece \u00e7al\u0131\u015f\u0131r durumda olmas\u0131n\u0131 de\u011fil, ayn\u0131 zamanda verimli ve g\u00fcvenli olmas\u0131n\u0131 sa\u011flar. Bu uygulamalar\u0131 benimseyerek, daha sa\u011flam ve y\u00fcksek performansl\u0131 PHP uygulamalar\u0131 geli\u015ftirebilirsiniz.<\/p>\n<h2>Sonu\u00e7 ve S\u0131k\u00e7a Sorulan Sorular<\/h2>\n<p>Bu kapsaml\u0131 rehber boyunca, Ubuntu i\u015fletim sistemi \u00fczerinde modern bir PHP 8.1 geli\u015ftirme ortam\u0131n\u0131 s\u0131f\u0131rdan nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m \u00f6\u011frendik. PHP 8.1&#8217;in getirdi\u011fi yeniliklerden ve performans art\u0131\u015flar\u0131ndan ba\u015flayarak, web sunucusu (Apache veya Nginx) entegrasyonuna, veritaban\u0131 kurulumuna (MySQL veya PostgreSQL), ba\u011f\u0131ml\u0131l\u0131k y\u00f6netimi i\u00e7in Composer&#8217;a ve hata ay\u0131klama i\u00e7in Xdebug&#8217;a kadar bir\u00e7ok \u00f6nemli konuyu ele ald\u0131k. Ayr\u0131ca, performans ve g\u00fcvenlik ipu\u00e7lar\u0131yla ortam\u0131n\u0131z\u0131 daha da optimize etme yollar\u0131n\u0131 da ke\u015ffettik.<\/p>\n<p>Art\u0131k g\u00fc\u00e7l\u00fc, g\u00fcncel ve verimli bir yerel PHP geli\u015ftirme ortam\u0131na sahipsiniz. Bu ortam, web uygulamalar\u0131n\u0131z\u0131 daha h\u0131zl\u0131 geli\u015ftirmek, hatalar\u0131 daha etkin bir \u015fekilde ay\u0131klamak ve en son PHP \u00f6zelliklerini kullanarak daha sa\u011flam ve modern \u00e7\u00f6z\u00fcmler \u00fcretmek i\u00e7in size zemin haz\u0131rlayacakt\u0131r. Unutmay\u0131n ki, geli\u015ftirme ortam\u0131n\u0131z\u0131 g\u00fcncel tutmak ve yeni ara\u00e7lar\u0131 ke\u015ffetmek, s\u00fcrekli \u00f6\u011frenme yolculu\u011funuzun \u00f6nemli bir par\u00e7as\u0131d\u0131r. Bu rehberdeki bilgileri temel alarak, kendi \u00f6zel ihtiya\u00e7lar\u0131n\u0131za g\u00f6re ortam\u0131n\u0131z\u0131 daha da ki\u015fiselle\u015ftirebilir ve geli\u015ftirebilirsiniz.<\/p>\n<p>Geli\u015ftirme d\u00fcnyas\u0131 s\u00fcrekli de\u011fi\u015fiyor ve geli\u015fiyor. PHP 8.1 ile gelen yenilikler, dilin ne kadar dinamik ve gelece\u011fe y\u00f6nelik oldu\u011funu bir kez daha kan\u0131tl\u0131yor. Bu g\u00fc\u00e7l\u00fc ara\u00e7lar\u0131 do\u011fru bir \u015fekilde kullanarak, projelerinizi bir sonraki seviyeye ta\u015f\u0131yabilir ve yarat\u0131c\u0131l\u0131\u011f\u0131n\u0131z\u0131 s\u0131n\u0131rs\u0131zca ortaya koyabilirsiniz. Ba\u015far\u0131lar dileriz!<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular<\/h3>\n<p><strong>1. PHP 8.1&#8217;den \u00f6nceki bir s\u00fcr\u00fcm\u00fc ayn\u0131 anda kullanabilir miyim?<\/strong><\/p>\n<p>Evet, Ondrej PPA sayesinde Ubuntu&#8217;da birden fazla PHP s\u00fcr\u00fcm\u00fcn\u00fc ayn\u0131 anda kurabilir ve y\u00f6netebilirsiniz. \u00d6rne\u011fin, PHP 7.4 ve PHP 8.1&#8217;i ayn\u0131 anda kurmak m\u00fcmk\u00fcnd\u00fcr. Web sunucunuzu (Apache veya Nginx) farkl\u0131 sanal hostlar i\u00e7in farkl\u0131 PHP-FPM s\u00fcr\u00fcmlerini kullanacak \u015fekilde yap\u0131land\u0131rabilirsiniz. CLI (komut sat\u0131r\u0131) i\u00e7in ise <code>sudo update-alternatives --config php<\/code> komutunu kullanarak varsay\u0131lan PHP s\u00fcr\u00fcm\u00fcn\u00fc se\u00e7ebilirsiniz. \u00d6rne\u011fin, bir proje PHP 7.4 gerektirirken, yeni bir proje PHP 8.1 ile \u00e7al\u0131\u015fabilir.<\/p>\n<p><strong>2. Xdebug neden \u00e7al\u0131\u015fm\u0131yor?<\/strong><\/p>\n<p>Xdebug&#8217;\u0131n \u00e7al\u0131\u015fmamas\u0131n\u0131n birka\u00e7 yayg\u0131n nedeni olabilir:<\/p>\n<ul>\n<li><strong><code>php.ini<\/code> yap\u0131land\u0131rmas\u0131 yanl\u0131\u015f:<\/strong> <code>xdebug.ini<\/code> veya ana <code>php.ini<\/code> dosyas\u0131ndaki ayarlar\u0131 do\u011fru yapt\u0131\u011f\u0131n\u0131zdan emin olun. \u00d6zellikle <code>zend_extension=xdebug.so<\/code> sat\u0131r\u0131n\u0131n do\u011fru yolu g\u00f6sterdi\u011finden ve <code>xdebug.mode=debug<\/code> ayar\u0131n\u0131n etkin oldu\u011fundan emin olun.<\/li>\n<li><strong>Web sunucusu yeniden ba\u015flat\u0131lmad\u0131:<\/strong> Yap\u0131land\u0131rma de\u011fi\u015fikliklerinden sonra PHP-FPM ve web sunucunuzu (Apache\/Nginx) yeniden ba\u015flatmay\u0131 unutmay\u0131n (<code>sudo systemctl restart php8.1-fpm apache2<\/code>).<\/li>\n<li><strong>IDE yap\u0131land\u0131rmas\u0131 yanl\u0131\u015f:<\/strong> IDE&#8217;nizin (\u00f6rne\u011fin VS Code) Xdebug i\u00e7in do\u011fru portu (genellikle 9003) dinledi\u011finden ve hata ay\u0131klama oturumunu ba\u015flatt\u0131\u011f\u0131n\u0131zdan emin olun.<\/li>\n<li><strong>G\u00fcvenlik duvar\u0131:<\/strong> Ubuntu&#8217;nuzda bir g\u00fcvenlik duvar\u0131 (UFW gibi) etkinse, Xdebug portunun (9003) gelen ba\u011flant\u0131lara a\u00e7\u0131k oldu\u011fundan emin olun (<code>sudo ufw allow 9003<\/code>).<\/li>\n<li><strong>Taray\u0131c\u0131 eklentisi:<\/strong> E\u011fer <code>xdebug.start_with_request=yes<\/code> kullanm\u0131yorsan\u0131z, taray\u0131c\u0131 Xdebug Helper eklentinizin etkin oldu\u011fundan ve do\u011fru IDE key&#8217;i ile yap\u0131land\u0131r\u0131ld\u0131\u011f\u0131ndan emin olun.<\/li>\n<\/ul>\n<p><strong>3. Yerel ortam\u0131m\u0131 internete a\u00e7abilir miyim?<\/strong><\/p>\n<p>Teorik olarak evet, ancak <strong>kesinlikle tavsiye edilmez<\/strong>. Yerel geli\u015ftirme ortamlar\u0131 g\u00fcvenlik a\u00e7\u0131s\u0131ndan canl\u0131 sunucular kadar s\u0131k\u0131 yap\u0131land\u0131r\u0131lmaz ve bir\u00e7ok g\u00fcvenlik a\u00e7\u0131\u011f\u0131 i\u00e7erebilir. E\u011fer projenizi ba\u015fkalar\u0131yla payla\u015fman\u0131z gerekiyorsa, bunun yerine bir test sunucusu (staging environment) kullanmak veya Ngrok gibi ara\u00e7larla ge\u00e7ici ve g\u00fcvenli t\u00fcneller olu\u015fturmak daha g\u00fcvenlidir. Ngrok, yerel sunucunuzu g\u00fcvenli bir \u015fekilde internete a\u00e7man\u0131za olanak tan\u0131r, ancak bu da sadece k\u0131sa s\u00fcreli g\u00f6sterimler veya testler i\u00e7in kullan\u0131lmal\u0131d\u0131r.<\/p>\n<p><strong>4. Composer nedir ve neden kullanmal\u0131y\u0131m?<\/strong><\/p>\n<p>Composer, PHP i\u00e7in bir ba\u011f\u0131ml\u0131l\u0131k y\u00f6neticisidir. Projenizin ihtiya\u00e7 duydu\u011fu k\u00fct\u00fcphaneleri (paketleri) indirmenizi, g\u00fcncellemenizi ve y\u00f6netmenizi sa\u011flar. PHP ekosistemindeki neredeyse t\u00fcm modern \u00e7er\u00e7eveler (Laravel, Symfony) ve k\u00fct\u00fcphaneler Composer arac\u0131l\u0131\u011f\u0131yla kurulur. Kullan\u0131m\u0131n\u0131n temel nedenleri \u015funlard\u0131r:<\/p>\n<ul>\n<li><strong>Ba\u011f\u0131ml\u0131l\u0131k \u00c7\u00f6z\u00fcmleme:<\/strong> Bir k\u00fct\u00fcphane ba\u015fka k\u00fct\u00fcphanelere ba\u011f\u0131ml\u0131ysa, Composer bunlar\u0131 otomatik olarak indirir.<\/li>\n<li><strong>Kolay Kurulum:<\/strong> Tek bir komutla karma\u015f\u0131k k\u00fct\u00fcphaneleri projenize ekleyebilirsiniz.<\/li>\n<li><strong>Otomatik Y\u00fckleme (Autoloading):<\/strong> <code>vendor\/autoload.php<\/code> dosyas\u0131 sayesinde, k\u00fct\u00fcphane s\u0131n\u0131flar\u0131n\u0131 manuel olarak <code>require<\/code> etmenize gerek kalmaz.<\/li>\n<li><strong>S\u00fcr\u00fcm Kontrol\u00fc:<\/strong> <code>composer.json<\/code> ve <code>composer.lock<\/code> dosyalar\u0131, projenizin hangi k\u00fct\u00fcphanenin hangi s\u00fcr\u00fcm\u00fcn\u00fc kulland\u0131\u011f\u0131n\u0131 kesin olarak belirtir, bu da farkl\u0131 geli\u015ftirme ortamlar\u0131nda tutarl\u0131l\u0131k sa\u011flar.<\/li>\n<\/ul>\n<p><strong>5. PHP-FPM nedir ve neden Apache mod_php yerine tercih edilmeli?<\/strong><\/p>\n<p>PHP-FPM (FastCGI Process Manager), PHP betiklerini web sunucusundan (Apache veya Nginx) ayr\u0131 bir i\u015flem olarak \u00e7al\u0131\u015ft\u0131ran bir FastCGI uygulamas\u0131d\u0131r. Geleneksel <code>mod_php<\/code> (Apache mod\u00fcl\u00fc) ise PHP yorumlay\u0131c\u0131s\u0131n\u0131 do\u011frudan Apache s\u00fcrecine entegre eder. PHP-FPM&#8217;in tercih edilmesinin ba\u015fl\u0131ca nedenleri:<\/p>\n<ul>\n<li><strong>Performans:<\/strong> PHP-FPM, her Apache \u00e7ocuk s\u00fcrecinin PHP yorumlay\u0131c\u0131s\u0131n\u0131 y\u00fcklemesini gerektirmedi\u011fi i\u00e7in daha az bellek t\u00fcketir ve daha h\u0131zl\u0131 yan\u0131t s\u00fcreleri sunar. \u00d6zellikle yo\u011fun trafikli sitelerde avantajl\u0131d\u0131r.<\/li>\n<li><strong>\u0130zolasyon:<\/strong> Her PHP-FPM havuzu (pool) farkl\u0131 bir kullan\u0131c\u0131 alt\u0131nda \u00e7al\u0131\u015fabilir, bu da birden fazla site bar\u0131nd\u0131r\u0131rken g\u00fcvenlik ve izolasyon sa\u011flar. Bir sitenin \u00e7\u00f6kmesi di\u011ferlerini etkilemez.<\/li>\n<li><strong>Esneklik:<\/strong> Apache ve Nginx gibi farkl\u0131 web sunucular\u0131yla sorunsuz bir \u015fekilde entegre olabilir. Ayr\u0131ca, farkl\u0131 PHP s\u00fcr\u00fcmlerini farkl\u0131 havuzlarda \u00e7al\u0131\u015ft\u0131rabilir.<\/li>\n<li><strong>Kararl\u0131l\u0131k:<\/strong> PHP-FPM, PHP s\u00fcre\u00e7lerini y\u00f6netir, \u00e7\u00f6ken s\u00fcre\u00e7leri yeniden ba\u015flat\u0131r ve kaynak kullan\u0131m\u0131n\u0131 optimize eder, bu da genel sistem kararl\u0131l\u0131\u011f\u0131n\u0131 art\u0131r\u0131r.<\/li>\n<\/ul>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Ubuntu&#8217;da PHP 8.1 Kurulumu ve Yerel Geli\u015ftirme Ortam\u0131 Olu\u015fturma Rehberi Modern web uygulamalar\u0131 geli\u015ftirmek i\u00e7in g\u00fcncel ve stabil&hellip;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[133],"tags":[],"class_list":{"0":"post-37515","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-php","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Neden PHP 8.1 ve Modern Geli\u015ftirme Ortam\u0131 Kurmal\u0131y\u0131z?<\/title>\n<meta name=\"description\" content=\"Modern web uygulamalar\u0131 geli\u015ftirmek i\u00e7in g\u00fcncel ve stabil bir yerel geli\u015ftirme ortam\u0131na sahip olmak, her geli\u015ftiricinin temel ihtiyac\u0131d\u0131r. Ubuntu tabanl\u0131 sistemlerde PHP 8.1&#039;i kurmak ve optimize edilmi\u015f bir geli\u015ftirme ortam\u0131 olu\u015fturmak, projelerinizin verimlili\u011fini ve performans\u0131n\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131rabilir. Bu rehberde, PHP 8.1&#039;in kurulumundan web sunucusu entegrasyonuna, veritaban\u0131 y\u00f6netiminden hata ay\u0131klama ara\u00e7lar\u0131na kadar t\u00fcm ad\u0131mlar\u0131 detayl\u0131 bir \u015fekilde ele alaca\u011f\u0131z.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/neden-php-8-1-ve-modern-gelistirme-ortami-kurmaliyiz\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Neden PHP 8.1 ve Modern Geli\u015ftirme Ortam\u0131 Kurmal\u0131y\u0131z?\" \/>\n<meta property=\"og:description\" content=\"Modern web uygulamalar\u0131 geli\u015ftirmek i\u00e7in g\u00fcncel ve stabil bir yerel geli\u015ftirme ortam\u0131na sahip olmak, her geli\u015ftiricinin temel ihtiyac\u0131d\u0131r. Ubuntu tabanl\u0131 sistemlerde PHP 8.1&#039;i kurmak ve optimize edilmi\u015f bir geli\u015ftirme ortam\u0131 olu\u015fturmak, projelerinizin verimlili\u011fini ve performans\u0131n\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131rabilir. Bu rehberde, PHP 8.1&#039;in kurulumundan web sunucusu entegrasyonuna, veritaban\u0131 y\u00f6netiminden hata ay\u0131klama ara\u00e7lar\u0131na kadar t\u00fcm ad\u0131mlar\u0131 detayl\u0131 bir \u015fekilde ele alaca\u011f\u0131z.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/neden-php-8-1-ve-modern-gelistirme-ortami-kurmaliyiz\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-01-07T09:21:46+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"42 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/neden-php-8-1-ve-modern-gelistirme-ortami-kurmaliyiz\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/neden-php-8-1-ve-modern-gelistirme-ortami-kurmaliyiz\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Neden PHP 8.1 ve Modern Geli\u015ftirme Ortam\u0131 Kurmal\u0131y\u0131z?\",\"datePublished\":\"2026-01-07T09:21:46+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/neden-php-8-1-ve-modern-gelistirme-ortami-kurmaliyiz\/\"},\"wordCount\":7080,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"PHP\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/neden-php-8-1-ve-modern-gelistirme-ortami-kurmaliyiz\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/neden-php-8-1-ve-modern-gelistirme-ortami-kurmaliyiz\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/neden-php-8-1-ve-modern-gelistirme-ortami-kurmaliyiz\/\",\"name\":\"Neden PHP 8.1 ve Modern Geli\u015ftirme Ortam\u0131 Kurmal\u0131y\u0131z?\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-01-07T09:21:46+00:00\",\"description\":\"Modern web uygulamalar\u0131 geli\u015ftirmek i\u00e7in g\u00fcncel ve stabil bir yerel geli\u015ftirme ortam\u0131na sahip olmak, her geli\u015ftiricinin temel ihtiyac\u0131d\u0131r. Ubuntu tabanl\u0131 sistemlerde PHP 8.1'i kurmak ve optimize edilmi\u015f bir geli\u015ftirme ortam\u0131 olu\u015fturmak, projelerinizin verimlili\u011fini ve performans\u0131n\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131rabilir. Bu rehberde, PHP 8.1'in kurulumundan web sunucusu entegrasyonuna, veritaban\u0131 y\u00f6netiminden hata ay\u0131klama ara\u00e7lar\u0131na kadar t\u00fcm ad\u0131mlar\u0131 detayl\u0131 bir \u015fekilde ele alaca\u011f\u0131z.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/neden-php-8-1-ve-modern-gelistirme-ortami-kurmaliyiz\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/neden-php-8-1-ve-modern-gelistirme-ortami-kurmaliyiz\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/neden-php-8-1-ve-modern-gelistirme-ortami-kurmaliyiz\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Neden PHP 8.1 ve Modern Geli\u015ftirme Ortam\u0131 Kurmal\u0131y\u0131z?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Neden PHP 8.1 ve Modern Geli\u015ftirme Ortam\u0131 Kurmal\u0131y\u0131z?","description":"Modern web uygulamalar\u0131 geli\u015ftirmek i\u00e7in g\u00fcncel ve stabil bir yerel geli\u015ftirme ortam\u0131na sahip olmak, her geli\u015ftiricinin temel ihtiyac\u0131d\u0131r. Ubuntu tabanl\u0131 sistemlerde PHP 8.1'i kurmak ve optimize edilmi\u015f bir geli\u015ftirme ortam\u0131 olu\u015fturmak, projelerinizin verimlili\u011fini ve performans\u0131n\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131rabilir. Bu rehberde, PHP 8.1'in kurulumundan web sunucusu entegrasyonuna, veritaban\u0131 y\u00f6netiminden hata ay\u0131klama ara\u00e7lar\u0131na kadar t\u00fcm ad\u0131mlar\u0131 detayl\u0131 bir \u015fekilde ele alaca\u011f\u0131z.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/neden-php-8-1-ve-modern-gelistirme-ortami-kurmaliyiz\/","og_locale":"tr_TR","og_type":"article","og_title":"Neden PHP 8.1 ve Modern Geli\u015ftirme Ortam\u0131 Kurmal\u0131y\u0131z?","og_description":"Modern web uygulamalar\u0131 geli\u015ftirmek i\u00e7in g\u00fcncel ve stabil bir yerel geli\u015ftirme ortam\u0131na sahip olmak, her geli\u015ftiricinin temel ihtiyac\u0131d\u0131r. Ubuntu tabanl\u0131 sistemlerde PHP 8.1'i kurmak ve optimize edilmi\u015f bir geli\u015ftirme ortam\u0131 olu\u015fturmak, projelerinizin verimlili\u011fini ve performans\u0131n\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131rabilir. Bu rehberde, PHP 8.1'in kurulumundan web sunucusu entegrasyonuna, veritaban\u0131 y\u00f6netiminden hata ay\u0131klama ara\u00e7lar\u0131na kadar t\u00fcm ad\u0131mlar\u0131 detayl\u0131 bir \u015fekilde ele alaca\u011f\u0131z.","og_url":"https:\/\/fatihsoysal.com\/blog\/neden-php-8-1-ve-modern-gelistirme-ortami-kurmaliyiz\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-01-07T09:21:46+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"42 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/neden-php-8-1-ve-modern-gelistirme-ortami-kurmaliyiz\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/neden-php-8-1-ve-modern-gelistirme-ortami-kurmaliyiz\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Neden PHP 8.1 ve Modern Geli\u015ftirme Ortam\u0131 Kurmal\u0131y\u0131z?","datePublished":"2026-01-07T09:21:46+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/neden-php-8-1-ve-modern-gelistirme-ortami-kurmaliyiz\/"},"wordCount":7080,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["PHP"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/neden-php-8-1-ve-modern-gelistirme-ortami-kurmaliyiz\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/neden-php-8-1-ve-modern-gelistirme-ortami-kurmaliyiz\/","url":"https:\/\/fatihsoysal.com\/blog\/neden-php-8-1-ve-modern-gelistirme-ortami-kurmaliyiz\/","name":"Neden PHP 8.1 ve Modern Geli\u015ftirme Ortam\u0131 Kurmal\u0131y\u0131z?","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-01-07T09:21:46+00:00","description":"Modern web uygulamalar\u0131 geli\u015ftirmek i\u00e7in g\u00fcncel ve stabil bir yerel geli\u015ftirme ortam\u0131na sahip olmak, her geli\u015ftiricinin temel ihtiyac\u0131d\u0131r. Ubuntu tabanl\u0131 sistemlerde PHP 8.1'i kurmak ve optimize edilmi\u015f bir geli\u015ftirme ortam\u0131 olu\u015fturmak, projelerinizin verimlili\u011fini ve performans\u0131n\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131rabilir. Bu rehberde, PHP 8.1'in kurulumundan web sunucusu entegrasyonuna, veritaban\u0131 y\u00f6netiminden hata ay\u0131klama ara\u00e7lar\u0131na kadar t\u00fcm ad\u0131mlar\u0131 detayl\u0131 bir \u015fekilde ele alaca\u011f\u0131z.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/neden-php-8-1-ve-modern-gelistirme-ortami-kurmaliyiz\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/neden-php-8-1-ve-modern-gelistirme-ortami-kurmaliyiz\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/neden-php-8-1-ve-modern-gelistirme-ortami-kurmaliyiz\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Neden PHP 8.1 ve Modern Geli\u015ftirme Ortam\u0131 Kurmal\u0131y\u0131z?"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/37515","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=37515"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/37515\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=37515"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=37515"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=37515"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}