Ubuntu'da PHP 8.1 Kurulumu ve Yerel Geliştirme Ortamı Kurulumu
Bu öğreticinin önceki bir versiyonu alenaholligan tarafından yazılmıştır.
Giriş
PHP, web geliştirme için tasarlanmış popüler, açık kaynaklı bir sunucu tarafı betik dilidir ve internetin önemli bir kısmını bloglardan e-ticaret sitelerine, büyük ölçekli uygulamalara kadar destekler. Her yeni sürümle birlikte PHP, geliştiricilerin sağlam ve ölçeklenebilir yazılımlar oluşturmasına yardımcı olmak için geliştirilmiş performans, güvenlik ve modern geliştirme özellikleri sunar.
PHP 8.1, güvenilirliği korurken önemli iyileştirmeler ve yeni dil özellikleri sunan kararlı ve uzun vadeli desteklenen bir sürümdür. Ubuntu üzerinde PHP 8.1 kurmak, yerel geliştirme ortamınızın güncel, güvenli ve WordPress, Laravel ve özel PHP uygulamaları gibi yaygın kullanılan çerçeveler ve platformlarla uyumlu olmasını sağlar.
Bu eğitim, PHP 8.1'i Ubuntu'ya yüklemeniz, Apache veya Nginx ile yapılandırmanız, temel PHP eklentilerini kurmanız ve bağımlılık yönetimi için Composer'ı yüklemeniz konusunda sizi adım adım yönlendirir. Ayrıca kurulumunuzu nasıl doğrulayacağınızı ve yaygın sorunları nasıl çözeceğinizi de öğreneceksiniz.
PHP uygulamalarınızı GitHub üzerinden Linux-Console.net Uygulama Platformu ile dağıtın. Linux-Console.net, uygulamanızın ölçeklenmesine odaklansın.
Ana Noktalar
Ubuntu 22.04 üzerinde PHP 8.1 kurulumu: Ubuntu 22.04 LTS, varsayılan depolarında PHP 8.1'i içerir ve bu sayede üçüncü taraf PPA’lara gerek duymadan
aptkullanarak kararlı, uzun vadeli destekli bir PHP sürümü kurabilirsiniz. Bu, öngörülebilir güncellemeler, güvenlik yamaları ve modern PHP framework’leriyle uyumluluk sağlar.Gerçek dünya projeleri için gerekli PHP eklentileri: Çoğu üretim seviyesindeki PHP uygulamaları,
mysql,curl,xml,mbstring,zip,gdvebcmathgibi eklentilere dayanır. Bu eklentilerin erken kurulumu, ileride oluşabilecek çalışma zamanı hatalarını önler ve Laravel, Symfony ve WordPress gibi frameworklerle uyumluluğu sağlar.PHP geliştirme için Apache veya Nginx seçimi: Apache,
mod_phpkullanarak PHP’yi doğrudan çalıştırabilirken, Nginx isteklerin işlenmesi için PHP‑FPM gerektirir. Her iki yaklaşım da yerel geliştirme için iyi çalışır, ancak PHP‑FPM modern üretim ortamlarını daha yakından yansıtır ve yük altında daha iyi ölçeklenir.Modern PHP iş akışlarının temeli olarak Composer: Composer, proje bağımlılıklarını
composer.jsonvecomposer.lockdosyaları aracılığıyla yönetir ve makineler arasında tutarlı yapılar sağlar. Framework kurulumları, otomatik yükleyiciler oluşturma ve işbirlikçi PHP projelerinde güvenilir bağımlılık sürümlerini koruma için vazgeçilmezdir.PHP'yi özellikle geliştirme için yapılandırma: Geliştirme ortamları, ayrıntılı hata raporlamasından, daha yüksek bellek limitlerinden ve daha uzun yürütme sürelerinden yararlanır. Bu ayarları
php.inidosyasında düzenlemek, geliştirme sırasında hataların hızlı bir şekilde ortaya çıkmasına yardımcı olur, ancak üretim dağıtımları için her zaman geri alınmalıdır.Hata ayıklama ve doğrulama kurulumun bir parçasıdır: PHP'yi
php -vile doğrulamak, yüklenen eklentileri kontrol etmek ve Apache, Nginx veya PHP‑FPM günlüklerini incelemek kritik adımlardır. Çoğu kurulum sorunu eksik eklentiler, izinler veya yanlış yapılandırılmış web sunucusu yönergelerinden kaynaklanır.
Önkoşullar
Bu öğreticiyi tamamlamak için şunlara ihtiyacınız var:
- Ubuntu çalıştıran yerel bir bilgisayar veya sanal sunucu (Ubuntu 22.04 LTS ve sonraki sürümlerle uyumlu)
- Makineye yönetici (sudo) erişimi
- Aktif bir internet bağlantısı
- Komut satırıyla temel düzeyde tan familiarity
Yeni bir Ubuntu sunucusu kuruyorsanız, Ubuntu ile Başlangıç Sunucu Kurulumu rehberimize göz atın.
Adım 1 — PHP 8.1 Kurulumu
Kurulum ve ayarları komut satırında tamamlayacaksınız; bu, bilgisayarınızla grafiksel olmayan bir şekilde etkileşim kurma yöntemidir. Yani, düğmelere tıklamak yerine, metin yazarak bilgisayarınızdan metin yoluyla geri bildirim alacaksınız.
Komut satırı, shell veya terminal olarak da bilinir, bilgisayarda her gün yaptığınız birçok görevi değiştirmenize ve otomatikleştirmenize yardımcı olabilir ve yazılım geliştiricileri için çok önemli bir araçtır. Daha güçlü şeyler yapmanızı sağlayabilecek öğrenilecek birçok terminal komutu vardır. Linux Terminaline Giriş isimli makale, terminal ile daha iyi bir şekilde tanışmanıza yardımcı olabilir.
Not: Eğer Ubuntu'ya yeniyseniz, ek sistem yönetimi rehberliği için Ubuntu belgelerimizi incelemeyi düşünebilirsiniz.
Ubuntu'da Terminal uygulamasını, ekranınızın sol üst köşesindeki Ubuntu simgesine tıklayıp arama çubuğuna terminal yazarken bulabilirsiniz. Terminal uygulaması simgesine tıklayarak açabilirsiniz. Alternatif olarak, Terminal uygulamasını otomatik olarak açmak için klavyenizde CTRL, ALT ve T tuşlarına aynı anda basabilirsiniz.
Not: Ubuntu 22.04 LTS'de, PHP 8.1 varsayılan depolarda mevcuttur. Ubuntu 22.04'te belirli bir sürüm belirtmeden PHP kurduğunuzda, sistem varsayılan olarak PHP 8.1'i yükler.
Birden fazla PHP sürümünü yönetmeniz veya farklı bir sürüm yüklemeniz gerekiyorsa, sürüm yönetimi için phpenv veya phpbrew kullanmayı düşünebilirsiniz.
Mevcut paketler listenizi güncellemek için aşağıdaki komutları çalıştırın, ardından PHP 8.1'i yükleyin:
sudo apt updatesudo apt install --no-install-recommends php8.1--no-install-recommends bayrağı, Apache web sunucusu gibi diğer paketlerin yüklenmemesini sağlar.
PHP sürüm bilgilerinizi aşağıdaki komut ile kontrol edin:
php -vBöyle bir çıktı alacaksınız:
PHP 8.1.2-1ubuntu2.22 (cli) (built: Jul 15 2025 12:11:22) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.2, Copyright (c) Zend Technologies
with Zend OPcache v8.1.2-1ubuntu2.22, Copyright (c), by Zend Technologies
Bu kurulum, resmi Ubuntu depolarından alınan PHP 8.1 paketlerini kullanarak Ubuntu 22.04 LTS üzerinde test edildi.
Web geliştirme için gerekli PHP uzantılarını yükleyin:
sudo apt install -y php8.1-cli php8.1-common php8.1-mysql php8.1-zip php8.1-gd php8.1-mbstring php8.1-curl php8.1-xml php8.1-bcmathBu komut aşağıdaki modülleri yükleyecektir:
php8.1-cli- komut yorumlayıcı, PHP betiklerini bir kabuk üzerinden test etmek veya genel kabuk betiği görevlerini gerçekleştirmek için kullanışlıphp8.1-common- PHP için dokümantasyon, örnekler ve yaygın modüllerphp8.1-mysql- MySQL veritabanlarıyla çalışmak içinphp8.1-zip- sıkıştırılmış dosyalarla çalışmak içinphp8.1-gd- resimlerle çalışmak içinphp8.1-mbstring- ASCII olmayan dizeleri yönetmek için kullanılırphp8.1-curl- PHP'de HTTP isteği yapmanızı sağlarphp8.1-xml- XML verileri ile çalışmak içinphp8.1-bcmath- hassas ondalık sayılarla çalışırken kullanılır
PHP yapılandırma dosyaları /etc/php/8.1/ dizininde saklanır. Ana yapılandırma dosyası php.ini dosyasıdır ve bu dosyanın konumu kurulumunuza bağlı olarak farklı dizinlerde olabilir:
- CLI yapılandırması:
/etc/php/8.1/cli/php.ini - Apache yapılandırması:
/etc/php/8.1/apache2/php.ini(Apache yüklüyse) - PHP-FPM yapılandırması:
/etc/php/8.1/fpm/php.ini(PHP-FPM yüklüyse)
Yüklü uzantıları doğrulayın:
php -mBu, yüklü tüm PHP modüllerini listeler. Eğer php -v beklenenden farklı bir sürüm gösteriyorsa, birden fazla PHP sürümü yüklü olabilir. PHP 8.1'i özellikle doğrulamak için php8.1 -v komutunu kullanın.
PHP'yi kurdunuz ve çalıştırdığınız sürümü doğruladınız. Ayrıca gerekli PHP modüllerini de yüklediniz ve yüklü olan modüllerin listesini alabildiniz.
Adım 2 — PHP'yi Apache ile yapılandırma
Apache PHP modülünü kurun:
sudo apt install libapache2-mod-php8.1Modülü etkinleştirin ve Apache'yi yeniden başlatın:
sudo a2enmod php8.1
sudo systemctl restart apache2mod_php'yi Anlamak: mod_php modülü PHP'yi doğrudan Apache sürecine entegre eder. Apache bir PHP dosyası için bir istek aldığında, gömülü PHP yorumlayıcısını kullanarak bunu dahili olarak işler. Bu, ayrı bir PHP-FPM hizmetine ihtiyaç duyan Nginx'ten farklıdır. a2enmod komutu, modülü etkinleştirmek için /etc/apache2/mods-enabled/ dizininde sembolik bir bağlantı oluşturur.
Apache’in PHP’yi doğru şekilde işleyip işlemediğini doğrulamak için, Apache’in belge kökünde (genellikle /var/www/html) bir test dosyası oluşturun:
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.phpTarayıcınızda http://localhost/info.php adresini ziyaret edin. PHP’nin yapılandırma bilgileri sayfasını görmelisiniz. Güvenlik için testten sonra bu dosyayı kaldırın:
sudo rm /var/www/html/info.phpApache PHP Sorunlarını Giderme
Mod_php kurulumundan sonra Apache başlamıyorsa:
Apache’nin hata günlüğünü kontrol edin:
sudo tail -20 /var/log/apache2/error.logYaygın sorunlar şunlardır:
- Çakışan PHP modülleri: Birden fazla PHP sürümünüz varsa, önce diğer PHP modüllerini
sudo a2dismod php7.4(varsa) ile devre dışı bırakın - Apache yapılandırmasında sözdizimi hataları: Kontrol etmek için
sudo apache2ctl configtestkomutunu çalıştırın
Yerel sunucuyu ziyaret edip “Çalışıyor!” mesajını görüyorsanız ama PHP dosyaları düz metin olarak görüntüleniyorsa:
Bu, Apache’nin PHP’yi işlemediği anlamına geliyor. Kontrol edin:
- Modülün etkinleştirildiğini doğrulayın:
apache2ctl -M | grep php- Hiçbir şey görünmüyorsa, modül yüklenmemiş demektir. Tekrar etkinleştirin:
sudo a2enmod php8.1
sudo systemctl restart apache2- PHP dosyanızın doğru uzantıya sahip olduğundan (
.php) ve PHP kodu içerdiğinden emin olun
403 Yasak Hatası alırsanız:
Dosya izinlerini kontrol edin:
sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/htmlGüvenlik Notu: phpinfo() fonksiyonu detaylı sistem bilgilerini açığa çıkarır. phpinfo() içeren dosyaları üretim sunucularında asla bırakmayın.
Apache Sanal Sunucu Yapılandırması
Özel alan adlarıyla yerel geliştirme için bir sanal sunucu oluşturun:
sudo nano /etc/apache2/sites-available/example.local.confBu yapılandırmayı ekleyin:
<VirtualHost *:80>
ServerName example.local
DocumentRoot /var/www/example.local
<Directory /var/www/example.local>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>ServerName: Bu sanal ana bilgisayar için alan adıDocumentRoot: PHP dosyalarınızın bulunduğu yerAllowOverride All:.htaccessdosyalarının Apache ayarlarını geçersiz kılmasına izin verir (Laravel gibi frameworkler için gereklidir)Require all granted: Dizin erişimine izin verir
Dizini oluşturun, siteyi etkinleştirin ve Apache'i yeniden başlatın:
sudo mkdir -p /var/www/example.local
sudo chown -R www-data:www-data /var/www/example.local
sudo a2ensite example.local.conf
sudo systemctl restart apache2Yerel erişim için alan adını /etc/hosts dosyanıza ekleyin:
echo "127.0.0.1 example.local" | sudo tee -a /etc/hostsApache ile Nginx Arasında Seçim Yapmak
Web sunucunuzu yapılandırmadan önce, hangisinin ihtiyaçlarınıza uygun olduğunu düşünün:
| Özellik | mod_php ile Apache | Nginx ile PHP-FPM |
|---|---|---|
| PHP İşleme | Apache işlemine gömülü | Ayrı PHP-FPM hizmeti |
| Hafıza Kullanımı | Daha yüksek (her Apache sürecinde PHP) | Düşük (ayrık işlem havuzu) |
| Performans | Düşük ila orta trafik için uygun | Yüksek trafik ve eş zamanlı istekler için daha iyi |
| Yapılandırma | Daha basit başlangıç kurulumu | Daha karmaşık (PHP-FPM yapılandırması gerektirir) |
| .htaccess Desteği | Yerel destek | Desteklenmiyor (sunucu bloklarında yapılandırılmalıdır) |
| Üretim Kullanımı | Paylaşımlı barındırmada yaygın | Modern dağıtımlarda yaygın |
| Öğrenme Eğrisi | Yeni başlayanlar için daha kolay | Daha dik öğrenme eğrisi |
| Kaynak Verimliliği | Yüksek yük altında daha az verimli | Yüksek yük altında daha verimli |
Apache'yi ne zaman seçmeli:
- Apache’e aşinasınız veya
.htaccessdesteğine ihtiyacınız var - Basit bir geliştirme ortamı kurmak
.htaccess'e büyük ölçüde bağlı framework'lerle çalışmak (bazı WordPress kurulumları)- Daha basit bir başlangıç yapılandırmasını tercih edersiniz
Nginx’i ne zaman seçmeli:
- Yüksek yük altında daha iyi performansa ihtiyacınız var
- Modern üretim ortamlarını yansıtmak istiyorsunuz
- Ölçeklenecek uygulamalar geliştiriyorsunuz
- Daha modern bir mimariyi tercih ediyorsunuz
Her ikisi de yerel geliştirme için eşit derecede iyi çalışır. Seçim genellikle kişisel tercihe veya mevcut altyapıya bağlıdır.
Adım 3 — PHP'yi Nginx ile Yapılandırma
PHP-FPM'i (FastCGI Process Manager) yükleyin:
sudo apt install php8.1-fpmPHP-FPM'yi başlatın ve etkinleştirin:
sudo systemctl start php8.1-fpm
sudo systemctl enable php8.1-fpmPHP-FPM ve FastCGI'yi Anlamak: Apache’nin mod_php modülünün aksine, Nginx PHP’yi doğrudan işlemez. PHP-FPM (FastCGI Process Manager), Nginx’in FastCGI protokolü üzerinden iletişim kurduğu ayrı bir hizmet olarak çalışır. FastCGI, programların web sunucularıyla iletişim kurması için kullanılan ikili bir protokoldür—geleneksel CGI’den daha hızlıdır çünkü istekler arasında süreçleri aktif tutar.
Nginx bir PHP dosyası için istek aldığında, isteği PHP-FPM'e bir Unix soketi (veya TCP bağlantısı) üzerinden iletir. PHP-FPM PHP kodunu işler ve sonucu Nginx'e geri gönderir, Nginx de bunu istemciye iletir. Bu ayrım, PHP-FPM’in kendi işlem havuzunu yönetmesine izin vererek performans ve kaynak yönetimini iyileştirir.
Nginx Sunucu Bloğu Yapılandırması
Bir sunucu bloğu yapılandırması oluşturun:
sudo nano /etc/nginx/sites-available/example.localBu yapılandırmayı ekleyin:
server {
listen 80;
server_name example.local;
root /var/www/example.local;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}Yapılandırma açıklandı:
root: PHP dosyalarınızın bulunduğu dizinlocation ~ \.php$: Regex kullanarak.phpile biten tüm isteklerle eşleşirinclude snippets/fastcgi-php.conf: Nginx’in varsayılan FastCGI yapılandırmasını dahil eder (SCRIPT_FILENAMEve diğer gerekli değişkenleri ayarlar)fastcgi_pass unix:/var/run/php/php8.1-fpm.sock: PHP-FPM'in dinlediği Unix soketi. Nginx'in PHP-FPM ile iletişim kurma yolu budur. Soket yolu/etc/php/8.1/fpm/pool.d/www.confdosyasında tanımlanmıştır.
Siteyi etkinleştirin ve yapılandırmayı test edin:
sudo mkdir -p /var/www/example.local
sudo chown -R www-data:www-data /var/www/example.local
sudo ln -s /etc/nginx/sites-available/example.local /etc/nginx/sites-enabled/
sudo nginx -tTest geçerse, Nginx'i yeniden başlatın:
sudo systemctl restart nginxAlan adını /etc/hosts dosyasına ekleyin:
echo "127.0.0.1 example.local" | sudo tee -a /etc/hostsBir test PHP dosyası oluşturun:
echo "<?php phpinfo(); ?>" | sudo tee /var/www/example.local/info.phpZiyaret edin http://example.local/info.php. PHP’nin yapılandırma sayfasını görmelisiniz. Doğrulamadan sonra test dosyasını kaldırın:
sudo rm /var/www/example.local/info.phpNginx PHP Sorunlarını Giderme
“502 Bad Gateway” hatası alırsanız:
Bu, Nginx’in PHP-FPM ile iletişim kuramadığı anlamına gelir. Şunları kontrol edin:
- PHP-FPM'in çalıştığını doğrulayın:
sudo systemctl status php8.1-fpm- Socket yolunun doğru olduğunu kontrol edin. Socket konumu
/etc/php/8.1/fpm/pool.d/www.confdosyasında tanımlanmıştır:
grep listen /etc/php/8.1/fpm/pool.d/www.confŞuna benzer bir şey görmelisiniz: listen=/run/php/php8.1-fpm.sock. Nginx yapılandırmanızdaki yol tam olarak eşleşmelidir. /var/run genellikle /run'a bir sembolik bağlantıdır, bu yüzden her iki yol da çalışır.
- Soket dosyası izinlerini kontrol edin:
ls -la /var/run/php/php8.1-fpm.sockSoket, www-data ya da Nginx'in çalıştığı kullanıcı tarafından sahip olunmalıdır. Eğer izinler yanlışsa:
sudo chown www-data:www-data /var/run/php/php8.1-fpm.sock- Nginx hata günlüğünü kontrol edin:
sudo tail -20 /var/log/nginx/error.logŞu tür hatalar görebilirsiniz:
connect() to unix:/var/run/php/php8.1-fpm.sock failed (2: No such file or directory)Bu, soket yolunun yanlış olduğunu veya PHP-FPM’in çalışmadığını gösterir.
PHP dosyaları çalışmak yerine indiriliyorsa:
Bu, Nginx’in PHP dosyalarını PHP-FPM’e iletmediği anlamına gelir. Kontrol edin:
- Sunucu yapılandırmanızda
location ~ \.php$bloğu mevcut fastcgi_passyönergesi doğru sokete işaret eder- Değişiklikleri yaptıktan sonra Nginx'i yeniden başlattınız
“Dosya bulunamadı” hatası alıyorsanız:
snippets/fastcgi-php.conf dosyasının var olduğunu kontrol edin:
ls -la /etc/nginx/snippets/fastcgi-php.confBu dosya, PHP-FPM’ye hangi dosyayı çalıştıracağını söyleyen SCRIPT_FILENAME’i ayarlar. Bunun olmaması durumunda, PHP-FPM hangi dosyayı işleyeceğini bilmez.
Adım 4 — PHP'yi Geliştirme için Yapılandırma
Geliştirme için PHP'yi hata raporlama, görüntüleme ayarları ve bellek sınırlarını php.ini dosyasında ayarlayarak yapılandırın. Bu ayarlar, üretim yapılandırmalarından farklıdır.
PHP, CLI (komut satırı) ve web sunucusu kullanımı için ayrı yapılandırma dosyaları kullanır. İlgili dosyayı düzenleyin:
CLI için (PHP’yi terminalden çalıştırırken):
sudo nano /etc/php/8.1/cli/php.iniWeb sunucusu için (PHP-FPM ile Apache veya Nginx):
# For Apache
sudo nano /etc/php/8.1/apache2/php.ini
# For PHP-FPM (Nginx)
sudo nano /etc/php/8.1/fpm/php.iniNot: Hem CLI hem de web sunucusunu kullanıyorsanız, her iki dosyayı da ayrı ayrı yapılandırmanız gerekir. cli/php.ini dosyasındaki değişiklikler web isteklerini etkilemez ve apache2/php.ini veya fpm/php.ini dosyasındaki değişiklikler CLI komut dosyalarını etkilemez.
Temel Geliştirme Ayarları
Bu ayarları php.ini dosyanızda bulun ve güncelleyin:
display_errors = On
display_startup_errors = On
error_reporting = E_ALL
log_errors = On
error_log = /var/log/php_errors.log
memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300
date.timezone = America/New_YorkHer ayarın yaptığı şey:
display_errors=On: PHP hatalarını doğrudan tarayıcıda gösterir (hata ayıklama için faydalı, üretim ortamında tehlikeli)display_startup_errors=On: PHP başlatılırken oluşan hataları gösterirerror_reporting=E_ALL: Tüm hata türlerini (uyarılar, bildirimler vb.) raporlarlog_errors=On: Hataları bir günlük dosyasına yazarerror_log: PHP'nin hata günlüklerini yazdığı yermemory_limit=256M: Bir scriptin kullanabileceği maksimum bellek ("memory exhausted" hatası alırsanız artırın)upload_max_filesize=64M: Yüklenen dosyalar için maksimum boyutpost_max_size=64M: POST verileri için maksimum boyut (mustupload_max_filesizedeğerinden büyük olmalıdır)max_execution_time=300: Bir komut dosyasının çalışabileceği en uzun süre (saniye cinsinden)date.timezone: Varsayılan zaman dilimini ayarlar (yerel zaman diliminizi kullanın:Asia/Kolkata,Europe/London,UTCvb.)
Üretim Uyarısı: Bu geliştirme ayarlarını üretim ortamında asla kullanmayın. Canlı sunucularda her zaman display_errors=Off olarak ayarlayın ve uygun hata raporlama seviyelerini kullanın.
Değişiklikleri yaptıktan sonra web sunucunuzu yeniden başlatın:
# For Apache
sudo systemctl restart apache2
# For PHP-FPM
sudo systemctl restart php8.1-fpmYapılandırmanızı Doğrulama
Yaptığınız değişikliklerin etkili olup olmadığını kontrol edin:
# For CLI
php -i | grep display_errors
# For web server (create a test file)
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/test.phpTest dosyasını tarayıcınızda açın ve display_errors öğesini arayın. On olarak görünmelidir. Doğruladıktan sonra test dosyasını kaldırın.
Değişiklikleriniz görünmüyorsa:
- Doğru
php.inidosyasını düzenlediğinizden emin olun (CLI vs web sunucusu) - Ayar adlarındaki yazım hatalarını kontrol edin (büyük/küçük harf duyarlıdır)
- Değişikliklerden sonra web sunucunuzu yeniden başlatın
- Bazı ayarlar, proje dizininizdeki
.htaccess(Apache) veyaphp.inidosyası ile geçersiz kılınabilir
PHP kullanmaya hemen başlayabilirsiniz, ancak muhtemelen PHP uygulamalarını hızlı bir şekilde geliştirmek için çeşitli kütüphaneler kullanmak isteyeceksiniz. PHP ortamınızı test etmeden önce, projeleriniz için bir bağımlılık yöneticisi kurun.
Adım 5 — Bağımlılık Yönetimi için Composer Kurulumu (İsteğe Bağlı)
Kütüphaneler, her şeyi kendiniz yazmanız gerekmeden yaygın sorunları çözmenize yardımcı olabilecek kod koleksiyonlarıdır. Mevcut birçok kütüphane olduğundan, bir bağımlılık yöneticisi kullanmak, PHP yazmada daha deneyimli hale geldikçe birden fazla kütüphaneyi yönetmenize yardımcı olacaktır.
Composer, PHP'de bağımlılık yönetimi için bir araçtır. Projenizin bağımlı olduğu kütüphaneleri belirtmenize olanak tanır ve bu paketlerin kurulumu ve güncellenmesini yönetir.
Benzer olmasına rağmen, Composer, yum veya apt ile aynı anlamda bir paket yöneticisi değildir. "Paketler" veya kütüphaneler ile ilgilenir, ancak bunları proje bazında yönetir ve projenizin içinde bir dizine (ör. vendor) kurar. Varsayılan olarak hiçbir şeyi genel olarak kurmaz. Bu nedenle, bir bağımlılık yöneticisidir. Ancak, global komutu aracılığıyla kullanım kolaylığı için bir global projeyi destekler.
Bu fikir yeni değil ve Composer, büyük ölçüde Node’un npm ve Ruby’nin bundler’ından ilham almıştır.
Diyelim ki :
- Birçok kütüphaneye bağlı bir projeniz var.
- Bu kütüphanelerden bazıları diğer kütüphanelere bağımlıdır.
Besteci:
- Bağlı olduğunuz kütüphaneleri belirtmenizi sağlar.
- Hangi paketlerin hangi sürümlerinin kurulabileceğini ve kurulması gerektiğini bulur ve bunları projenize indirerek kurar.
- Tüm bağımlılıklarınızı tek bir komutla güncellemenizi sağlar.
- Bağımlılıkları bildirme ile ilgili daha fazla ayrıntı için Temel Kullanım bölümünü görmenizi sağlar.
Composer yükleyicisini indirin:
curl -sS https://getcomposer.org/installer -o /tmp/composer-setup.phpYükleyicinin bütünlüğünü SHA-384 karma değerini kontrol ederek doğrulayın. En son karma değerini alın:
HASH=$(curl -sS https://composer.github.io/installer.sig)Hash'in eşleştiğini doğrulayın:
php -r "if (hash_file('SHA384', '/tmp/composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('/tmp/composer-setup.php'); } echo PHP_EOL;"Görmelisin:
Installer verifiedEğer Installer corrupt görüyorsanız, indirme tamamlanmamış veya değiştirilmiş demektir. Kurulum dosyasını yeniden indirin ve hash değerini doğrulayın. Hâlâ sorun yaşıyorsanız, internet bağlantınızı kontrol edin veya farklı bir ağdan indirmeyi deneyin.
Composer'ı global olarak kurun:
sudo php /tmp/composer-setup.php --install-dir=/usr/local/bin --filename=composerBuna benzer bir çıktı alacaksınız:
All settings correct for using Composer
Downloading...
Composer (version 2.3.5) successfully installed to: /usr/local/bin/composer
Use it: php /usr/local/bin/composerKurulumunuzu test edin:
composerAşağıdakine benzer bir çıktı alacaksınız:
______
/ ____/___ ____ ___ ____ ____ ________ _____
/ / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
/_/
Composer version 2.3.5 2022-04-13 16:43:00
Usage:
command [options] [arguments]
Options:
-h, --help Display help for the given command. When no command is given display help for the list command
-q, --quiet Do not output any message
-V, --version Display this application version
--ansi|--no-ansi Force (or disable --no-ansi) ANSI output
-n, --no-interaction Do not ask any interactive question
--profile Display timing and memory usage information
--no-plugins Whether to disable plugins.
--no-scripts Skips the execution of all scripts defined in composer.json file.
-d, --working-dir=WORKING-DIR If specified, use the given directory as working directory.
--no-cache Prevent use of the cache
-v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
. . .Bu, Composer'ın sisteminize başarıyla kurulduğunu ve sistem genelinde kullanılabilir olduğunu doğrular.
Not: Sunucunuzda barındırdığınız her proje için ayrı Composer çalıştırılabilir dosyalarına sahip olmayı tercih ediyorsanız, bunu proje bazında yerel olarak kurabilirsiniz. Bu yöntem, sistem kullanıcınızın sistem genelinde yazılım yükleme iznine sahip olmadığı durumlarda da faydalıdır.
Bunu yapmak için, herhangi bir argüman kullanmadan php /tmp/composer-setup.php komutunu çalıştırın. Bu komut, mevcut dizininizde bir composer.phar dosyası oluşturacaktır ve bu dosyayı php composer.phar komutuyla çalıştırabilirsiniz.
Adım 6 — PHP Projesinde Composer Kullanmak
Son adım olarak, isterseniz projenizi composer init ile başlatabilirsiniz. Bu işlem, proje bağımlılıklarını yönetecek olan composer.json dosyasını oluşturur. Projeyi başlatmak, ayrıca Yazar ve Lisans gibi proje detaylarını tanımlamanıza ve Composer’ın otomatik yükleme işlevini kullanmanıza olanak tanır. Bağımlılıkları şimdi tanımlayabilir veya daha sonra ekleyebilirsiniz.
Bir proje dizini oluşturun ve Composer'ı başlatın:
cd ~
mkdir example-project
cd example-project
composer initBu komutu çalıştırmak, kurulum sihirbazını başlatacaktır. Sihirbazda girdiğiniz bilgiler daha sonra güncellenebilir, bu nedenle varsayılanları bırakabilir ve sadece ENTER tuşuna basabilirsiniz. Henüz herhangi bir bağımlılığı yüklemeye hazır değilseniz, no seçeneğini tercih edebilirsiniz. Her istemde bilgilerinizi girin:
Welcome to the Composer config generator
This command will guide you through creating your composer.json config.
Package name (<vendor>/<name>) [sammy/example-project]: sammy/project1
Description []:
Author [n to skip]: Sammy <sammy@linux-console.net>
Minimum Stability []:
Package Type (e.g. library, project, metapackage, composer-plugin) []: project
License []:
Define your dependencies.
Would you like to define your dependencies (require) interactively [yes]? no
Would you like to define your dev dependencies (require-dev) interactively [yes]? no
Add PSR-4 autoload mapping? Maps namespace "Sammy\Project1" to the entered relative path. [src/, n to skip]: n
{
"name": "sammy/project1",
"type": "project",
"authors": [
{
"name": "Sammy",
"email": "sammy@linux-console.net"
}
],
"require": {}
}
Do you confirm generation [yes]? yesÜretimi onaylamadan önce, sihirbazın oluşturacağı composer.json dosyasının bir örneğini göreceksiniz. Her şey yolunda görünüyorsa, evet varsayılanını onaylayabilirsiniz. Yeniden başlamak istiyorsanız, hayır seçeneğini tercih edin.
Herhangi bir bağımlılığı ilk kez tanımladığınızda, Composer bir vendor klasörü oluşturur. Tüm bağımlılıklar bu vendor klasörüne yüklenir. Composer ayrıca bir composer.lock dosyası oluşturur. Bu dosya, projenizde kullanılan her bağımlılık ve alt bağımlılığın tam sürümünü belirtir. Bu, programınızın çalıştırıldığı her makinenin her paketin tam olarak aynı sürümünü kullanmasını sağlar.
Not: vendor klasörü asla sürüm kontrol sisteminize (VCS) dahil edilmemelidir. vendor klasörü yalnızca diğer satıcılardan yüklediğiniz paketleri içerir. Bu bireysel satıcılar kendi kodlarını kendi sürüm kontrol sistemlerinde yönetirler. Sadece sizin yazdığınız kodu takip etmelisiniz. vendor klasörünü eklemek yerine yalnızca composer.json ve composer.lock dosyalarınızı eklemeniz yeterlidir. Belirli dosyaları görmezden gelme hakkında daha fazla bilgi için Git Kullanımı: Bir Referans Kılavuzu'nu inceleyebilirsiniz.
Artık PHP'yi kurduğunuza ve proje bağımlılıklarınızı Composer ile yönetmenin bir yoluna sahip olduğunuza göre, ortamınızı test etmeye hazırsınız.
Adım 7 — PHP Ortamını Test Etme
Kurulumunuzu test etmek için temel bir PHP betiği oluşturun ve çalıştırın:
nano hello.phpAşağıdaki PHP kodunu ekleyin:
<?php
echo 'Hello World!';
?>Dosyayı kaydedip kapatın (önce CTRL+X, sonra Y, ardından ENTER tuşlarına basın). Ardından betiği çalıştırın:
php hello.phpEğer PHP düzgün bir şekilde işlenirse, sadece tırnak içindeki karakterleri göreceksiniz:
Hello World!PHP betiğini başarıyla işledi, bu da PHP ortamınızın başarıyla yüklendiği ve programlama yolculuğunuza devam etmeye hazır olduğunuz anlamına geliyor.
Adım 8 — Gerçek Dünya PHP Projelerini Kurma
Laravel, Symfony ve WordPress gibi modern PHP çerçeveleri belirli PHP uzantıları ve Composer gerektirir. Çerçeveyi Composer veya çerçevenin kurucusunu kullanarak yükleyin, ardından web sunucunuzu projenin public dizinine yönlendirecek şekilde yapılandırın.
Laravel Kurulumu
Laravel'i Composer kullanarak yükleyin:
composer create-project laravel/laravel my-laravel-app
cd my-laravel-appBu komut, Laravel'i ve tüm bağımlılıklarını indirir. İşlem birkaç dakika sürebilir.
Laravel, bu PHP uzantılarını gerektirir (Adım 1'de kurulmuş olmalıdır):
php8.1-mbstring- Çok baytlı dizge işlemleriphp8.1-xml- XML ayrıştırmaphp8.1-curl- HTTP istekleriphp8.1-zip- Arşiv işlemleriphp8.1-bcmath- Keyfi hassasiyet matematiği
Laravel "mbstring eksik" diyorsa, hatta siz kurmuş olsanız bile:
Bu genellikle uzantının yüklendiği ama yüklenmediği anlamına gelir. Kontrol edin:
- Eklentinin yüklü olduğunu doğrulayın:
php -m | grep mbstring- Eksikse, yükleyin:
sudo apt install php8.1-mbstring- Yüklüyse ama görünmüyorsa, web sunucunuzu yeniden başlatın:
# For Apache
sudo systemctl restart apache2
# For PHP-FPM
sudo systemctl restart php8.1-fpm- Hangi
php.inidosyasının kullanıldığını kontrol edin. Laravel’in yükleyicisi CLI PHP kullanır, bu yüzden kontrol edin:
php --iniUzantının CLI php.ini dosyasında etkinleştirildiğinden emin olun.
Laravel kurulumunu doğrulama:
Kurulum tamamlandıktan sonra, Laravel’in geliştirme sunucusunu başlatın:
php artisan serveGörmelisin:
INFO Server running on [http://127.0.0.1:8000]Tarayıcınızda http://localhost:8000 adresini ziyaret edin. Laravel’in karşılama sayfasını görmelisiniz.
Apache veya Nginx ile üretim benzeri ortamlarda:
Web sunucunuzu, proje kökü değil, public dizinine yönlendirecek şekilde yapılandırın. Laravel’in public/index.php dosyası tüm istekler için giriş noktasıdır.
Not: Laravel hakkında daha fazla bilgi edinmek için Ubuntu'ya Laravel Yükleme konusundaki eğitimimize göz atın.
WordPress Kurulumu
WordPress'i indirip çıkarın:
cd /var/www
sudo wget https://wordpress.org/latest.tar.gz
sudo tar -xzf latest.tar.gz
sudo chown -R www-data:www-data /var/www/wordpressWordPress, bir MySQL veya MariaDB veritabanı gerektirir. Gerekirse MySQL’i yükleyin:
sudo apt install mysql-server
sudo mysql_secure_installationmysql_secure_installation komutu size şunları yapmanızı isteyecektir:
- Root şifresi belirle
- Anonim kullanıcıları kaldır
- Root girişine uzaktan izin verme
- Test veritabanını kaldır
- Ayrıcalık tablolarını yeniden yükle
WordPress için bir veritabanı ve kullanıcı oluşturun:
sudo mysql -u root -pMySQL istemcisinde:
CREATE DATABASE wordpress_db;
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'secure_password';
GRANT ALL PRIVILEGES ON wordpress_db.* TO 'wpuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;secure_password yerine güçlü bir şifre kullanın. WordPress, veritabanına bağlanmak için bu kimlik bilgilerini kullanacaktır.
WordPress veritabanına bağlanamıyorsa:
- MySQL'in çalıştığını doğrulayın:
sudo systemctl status mysql- Veritabanı bağlantısını test et:
mysql -u wpuser -p wordpress_dbEğer bu işe yaramazsa, kontrol edin:
- Kullanıcı adı ve şifre doğru
- Veritabanı mevcut:
SHOW DATABASES; - Kullanıcının izinleri:
SHOW GRANTS FOR 'wpuser'@'localhost';
- PHP’nin MySQL eklentisinin yüklü olduğunu kontrol edin:
php -m | grep mysqlEksikse, yükleyin:
sudo apt install php8.1-mysql
sudo systemctl restart apache2 # or php8.1-fpm for NginxWordPress kurulumunu tamamlama:
Web sunucunuzu /var/www/wordpress dizinine yönlendirecek şekilde yapılandırın (Apache için Adım 2 veya Nginx için Adım 3'e bakın). Sitenizi tarayıcınızda ziyaret edin. WordPress size şunları yapmanızı isteyecektir:
- Dilini seç
- Veritabanı kimlik bilgilerini girin (oluşturduğunuz veritabanını, kullanıcı adını ve şifreyi kullanın)
- Kurulumu tamamlayın
Not: Ayrıntılı WordPress kurulumu için Ubuntu üzerinde LAMP ile WordPress Nasıl Kurulur konusuna bakın.
Symfony Kurulumu
Symfony'yi Composer kullanarak kurun:
composer create-project symfony/website-skeleton my-symfony-app
cd my-symfony-appSymfony, Laravel ile aynı uzantıları gerektirir. Geliştirme sunucusunu başlatın:
symfony server:startVeya PHP’nin dahili sunucusunu kullanın:
php -S localhost:8000 -t publicEğer Symfony kurulumu eklenti hatalarıyla başarısız olursa:
Gerekli tüm uzantıların yüklü ve etkin olduğundan emin olun:
php -m | grep -E 'mbstring|xml|curl|zip|bcmath'Eksik olanlar varsa, onları yükleyin ve web sunucunuzu yeniden başlatın.
Adım 9 — Yerel Geliştirme için En İyi Uygulamalar
Yerel ortamınızı güvence altına alın, sürüm kontrolü kullanın, uygun dosya izinlerini yapılandırın ve ortamınıza özel ayarları yapın. Bu uygulamalar güvenlik sorunlarını önler ve geliştirme sürecini daha sorunsuz hale getirir.
Güvenlik Hususları
Yerel geliştirme sırasında bile güvenlik en iyi uygulamalarını takip edin:
Üretimde tehlikeli PHP fonksiyonlarını devre dışı bırakın:
exec(),system()veshell_exec()gibi fonksiyonlar, üretimphp.inidosyalarında kısıtlanmalıdır.Ortam değişkenlerini kullanın: Hassas yapılandırmaları
.envdosyalarında saklayın (bunları sürüm kontrolüne asla eklemeyin). Laravel ve Symfony bunu yerleşik olarak destekler.Dosya izinlerini doğru şekilde ayarlayın: Web sunucusu dosyaları web sunucusu kullanıcısı tarafından okunabilir olmalı, ancak yazılabilir olmamalıdır:
sudo chown -R www-data:www-data /var/www/your-project
sudo find /var/www/your-project -type d -exec chmod 755 {} \;
sudo find /var/www/your-project -type f -exec chmod 644 {} \;Bu izinlerin önemli olmasının nedeni: Dizinlerin 755 (sahibi için okuma, yazma, çalıştırma; diğerleri için okuma ve çalıştırma) olması gerekir ki web sunucusu bunların içinden geçebilsin. Dosyaların ise 644 (sahibi için okuma ve yazma; diğerleri için yalnızca okuma) olması gerekir ki web sunucusu onları okuyabilsin ama değiştiremesin. Bu, kötü niyetli betiklerin dosyalarınızı üzerine yazmasını engeller.
Sürüm Kontrolü Entegrasyonu
PHP projelerinizde her zaman sürüm kontrolü kullanın. Proje dizininizde Git'i başlatın:
cd /var/www/your-project
git initGereksiz dosyaları hariç tutmak için bir .gitignore dosyası oluşturun:
/vendor/
/node_modules/
.env
.DS_Store
*.logPerformans Optimizasyonu
Yerel geliştirmede daha iyi performans için:
OPcache'i Etkinleştir: OPcache, PHP 8.1 ile birlikte gelir ve derlenmiş PHP kodunu önbelleğe alarak performansı artırır.
Composer’ın otomatik yükleyici optimizasyonunu kullanın:
composer install --optimize-autoloader --no-dev- PHP-FPM havuzlarını yapılandırın, Nginx kullanıyorsanız daha iyi kaynak yönetimi için.
Adım 10 — Yaygın Sorunların Giderilmesi
Yaygın PHP kurulum sorunları arasında eksik eklentiler, yanlış dosya izinleri, web sunucusu yapılandırma hataları ve sürüm uyumsuzlukları bulunur. Çoğu problem, eklenti yüklemesini kontrol ederek, dosya izinlerini doğrulayarak ve web sunucusu günlüklerini gözden geçirerek çözülebilir.
PHP Eklentileri Yüklenmiyor
Eğer php -m yeni yüklediğiniz bir eklentiyi göstermiyorsa:
- Gerçekten yüklü olduğunu doğrulayın:
dpkg -l | grep php8.1-extension_name- Uzantı dosyasının var olup olmadığını kontrol edin:
ls /usr/lib/php/*/extension_name.sophp.inidosyasında etkinleştirildiğini doğrulayın. Bazı uzantıların açıkça etkinleştirilmesi gerekir:
grep -i extension_name /etc/php/8.1/*/php.ini- Web sunucunuzu yeniden başlatın:
# For Apache
sudo systemctl restart apache2
# For PHP-FPM
sudo systemctl restart php8.1-fpm- Hangi
php.inidosyasının kullanıldığını kontrol edin:
php --iniDoğru php.ini dosyasını kontrol ettiğinizden emin olun (CLI vs web sunucusu).
Eklenti hâlâ görünmüyorsa:
- Bazı uzantılar ek sistem kütüphaneleri gerektirir. Uzantının dokümantasyonunu kontrol edin
- Doğru sürümü kurduğunuzu doğrulayın (php8.1-uzantısı, php8.0-uzantısı değil)
- Engellemeye neden olabilecek çakışan PHP sürümlerini kontrol edin
500 Dahili Sunucu Hatası
500 hatası, sunucunun bir hata ile karşılaştığı ancak detayları gösteremediği anlamına gelir. Hata günlüklerini kontrol edin:
# Apache
sudo tail -20 /var/log/apache2/error.log
# Nginx
sudo tail -20 /var/log/nginx/error.log
# PHP-FPM
sudo tail -20 /var/log/php8.1-fpm.logYaygın nedenler ve çözümler:
- Yanlış dosya izinleri: PHP dosyaları web sunucusu kullanıcısı tarafından okunabilir olmalıdır
sudo chown -R www-data:www-data /var/www/your-project
sudo find /var/www/your-project -type f -exec chmod 644 {} \;
sudo find /var/www/your-project -type d -exec chmod 755 {} \;Eksik PHP uzantıları: "Tanımsız fonksiyon çağrısı" gibi mesajlar için hata günlüğünü kontrol edin. Eksik uzantıyı yükleyin ve web sunucusunu yeniden başlatın.
PHP dosyalarındaki sözdizimi hataları: Hata günlüğü dosya ve satır numarasını gösterecektir. Yaygın sorunlar:
- Eksik noktalı virgüller
- Kapanmamış parantezler veya tırnak işaretleri
- Tanımsız fonksiyonları veya sınıfları kullanmak
Yanlış web sunucusu yapılandırması:
- Apache: Sanal sunucu yapılandırmasını ve modül yüklemelerini kontrol edin
- Nginx: PHP-FPM soket yolunu ve FastCGI yapılandırmasını doğrulayın
PHP bellek limiti aşıldı: Eğer “İzin verilen bellek boyutu tükendi” hataları görüyorsanız,
php.inidosyasındamemory_limitdeğerini artırın
PHP Sürüm Çakışmaları
Eğer php -v beklenen sürümden farklı bir sürüm gösteriyorsa, birden fazla PHP sürümünüz yüklüdür.
Hangi sürümlerin yüklü olduğunu kontrol edin:
dpkg -l | grep php | grep -E 'php[0-9]'Doğru sürümü açıkça kullanın:
php8.1 -v
php8.1 -mWeb sunucunuzu PHP 8.1 kullanacak şekilde güncelleyin:
Apache için, diğer PHP modüllerini devre dışı bırakın ve PHP 8.1'i etkinleştirin:
sudo a2dismod php7.4 php8.0 # if they exist
sudo a2enmod php8.1
sudo systemctl restart apache2PHP-FPM için, diğer sürümleri durdurun ve PHP 8.1'i başlatın:
sudo systemctl stop php7.4-fpm php8.0-fpm # if they exist
sudo systemctl start php8.1-fpm
sudo systemctl enable php8.1-fpmPHP 8.1'i varsayılan CLI sürümü olarak ayarlayın:
sudo update-alternatives --set php /usr/bin/php8.1Composer Bellek Sorunları
Composer belleği tüketirse, şu şekilde bir hata görürsünüz:
Fatal error: Allowed memory size of 134217728 bytes exhaustedArtan bellekle Composer'ı çalıştırarak düzeltin:
php -d memory_limit=512M /usr/local/bin/composer installVeya php.ini dosyasında PHP’nin bellek limitini artırın:
memory_limit = 512MComposer kurulumu bir hash uyumsuzluğu nedeniyle başarısız olursa:
Hash doğrulaması aşağıdaki durumlarda başarısız olabilir:
- Kurulum dosyası, indirdiğinizden bu yana güncellendi (en son hash için yeniden indirin)
- İndirmeniz bozuldu (tekrar indirmeyi deneyin)
- Dosyaları değiştiren bir proxy’nin arkasındasınız (ağ ayarlarınızı kontrol edin)
Veritabanı Bağlantı Sorunları
PHP uygulamanız MySQL/MariaDB'ye bağlanamıyorsa, şu tür hatalar görebilirsiniz:
SQLSTATE[HY000] [2002] No such file or directoryveya
Access denied for user 'username'@'localhost'Arıza giderme adımları:
- Veritabanı hizmetinin çalışıp çalışmadığını doğrulayın:
sudo systemctl status mysqlÇalışmıyorsa, başlatın:
sudo systemctl start mysql
sudo systemctl enable mysql- PHP’nin MySQL eklentisinin yüklü olduğunu kontrol edin:
php -m | grep mysqlEksikse, yükleyin:
sudo apt install php8.1-mysql
sudo systemctl restart apache2 # or php8.1-fpm for Nginx- Veritabanı kimlik bilgilerini ve izinlerini doğrulayın. Bağlantıyı test edin:
mysql -u username -p database_nameEğer bu işe yaramazsa, kontrol edin:
- Kullanıcı adı ve şifre doğru
- Veritabanı mevcut:
SHOW DATABASES; - Kullanıcının izinleri:
SHOW GRANTS FOR 'username'@'localhost';
Not: MySQL kurulumu için Ubuntu'da MySQL'in nasıl kurulacağını inceleyin.
PHP Dosyası Çalıştırmak yerine Düz Metin Olarak Görünüyor
PHP dosyanız tarayıcıda düz metin olarak görüntüleniyorsa:
Dosya uzantısını kontrol edin:
.phpolmalı,.txtveya.htmldeğilPHP'nin dosyaları işlediğini doğrulayın:
- Apache:
mod_php'nin etkin olduğunu kontrol edin:apache2ctl -M | grep php
- Apache:
- Nginx: PHP-FPM'in çalıştığını ve socket yolunun doğru olduğunu kontrol edin
Dosya izinlerini kontrol edin: Web sunucusunun dosyayı okuyabilmesi gerekir
Dosyanın PHP kodu içerdiğini doğrulayın:
<?phpveya<?ile başladığından emin olunWeb sunucusu yapılandırmasını kontrol edin:
- Apache: Sanal sunucu doğru yapılandırılmamış olabilir
- Nginx:
Konum ~ \.php$bloğu eksik veya yanlış olabilir
Dosya Yükleme Sorunları
Dosya yüklemeleri başarısız olursa, şu tür hatalar görebilirsiniz:
The uploaded file exceeds the upload_max_filesize directiveBu php.ini ayarlarını kontrol edin:
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300Önemli: post_max_size, upload_max_filesize'den büyük olmalıdır. Eğer upload_max_filesize=100M olarak ayarlarsanız, post_max_size=110M veya daha fazla olarak ayarlayın.
Yüklemeler hâlâ başarısız olursa:
- Belirli hata mesajları için hata günlüğünü kontrol edin
- Yükleme dizininin var olduğunu ve yazılabilir olduğunu doğrulayın:
sudo chmod 755 /path/to/upload/directory
sudo chown www-data:www-data /path/to/upload/directory- Disk alanını kontrol et:
df -h - Formun
enctype="multipart/form-data"kullandığını doğrulayın
Yaptığınız php.ini değişikliklerinden sonra web sunucunuzu yeniden başlatın.
SSS
Ubuntu'ya PHP 8.1 nasıl kurarım?
PHP 8.1'i Ubuntu’nun paket yöneticisini kullanarak kurun: sudo apt update && sudo apt install php8.1. PHP 8.1, Ubuntu’nun varsayılan depolarında mevcuttur, bu yüzden ek paket kaynaklarına gerek yoktur.
Geliştirme için hangi PHP eklentileri gereklidir?
Gerekli eklentiler arasında php8.1-cli, php8.1-mysql, php8.1-curl, php8.1-xml, php8.1-mbstring, php8.1-zip, php8.1-gd ve php8.1-bcmath bulunur. Bunlar veritabanı bağlantısı, HTTP istekleri, dize işleme ve görüntü işleme işlemlerini kapsar.
PHP'yi Apache veya Nginx ile nasıl yapılandırabilirim?
Apache için, libapache2-mod-php8.1 paketini kurun ve sudo a2enmod php8.1 ile etkinleştirin. Nginx için, php8.1-fpm paketini kurun ve PHP isteklerini PHP-FPM soketine FastCGI üzerinden iletecek şekilde Nginx'i yapılandırın.
PHP'nin doğru bir şekilde yüklendiğini nasıl doğrulayabilirim?
PHP sürümünü kontrol etmek için php -v komutunu çalıştırın. <?php phpinfo(); ?> ile bir test dosyası oluşturun ve detaylı PHP yapılandırma bilgilerini görmek için web sunucunuz üzerinden erişin.
Bu kurulumla Laravel veya WordPress'i yerel olarak çalıştırabilir miyim?
Evet. Laravel, Composer ve yukarıda belirtilen standart PHP uzantılarını gerektirir. WordPress ise PHP'nin yanı sıra bir MySQL veritabanına ihtiyaç duyar. Her iki framework de Apache veya Nginx yapılandırmaları ile çalışır.
PHP projeleri için Composer'ı nasıl kurarım?
Composer yükleyicisini indirin, hash değerini doğrulayın ve global olarak kurun: sudo php /tmp/composer-setup.php --install-dir=/usr/local/bin --filename=composer. composer --version ile doğrulayın.
Eksik PHP uzantılarını nasıl gideririm?
Yüklü eklentileri php -m ile kontrol edin. Eksik eklentileri sudo apt install php8.1-extension_name ile yükleyin, ardından web sunucunuzu yeniden başlatın.
PHP hata raporlamasını geliştirme ortamı için nasıl yapılandırabilirim?
php.ini dosyasını düzenleyin ve display_errors=On, error_reporting=E_ALL ve log_errors=On olarak ayarlayın. Üretim ortamlarında hata görüntülemesini devre dışı bırakmayı unutmayın.
PHP için Apache ile Nginx arasındaki fark nedir?
Apache, PHP’yi doğrudan işlemek için mod_php kullanır (PHP, Apache’nin sürecine gömülüdür), oysa Nginx, PHP isteklerini işlemek için PHP-FPM (FastCGI Process Manager) gerektirir (PHP ayrı bir servis olarak çalışır). Detaylı karşılaştırma tablosu için yukarıdaki “Apache ve Nginx Arasında Seçim” bölümüne bakabilirsiniz. Her iki yaklaşım da iyi çalışır; seçim yaparken performans ihtiyaçlarınız, aşinalığınız ve mevcut altyapınızı göz önünde bulundurun.
Aynı sistemde birden fazla PHP sürümü kurabilir miyim?
Evet, phpenv veya phpbrew gibi araçlar kullanarak. Ancak, çoğu geliştirme senaryosu için tek bir PHP sürümü yeterlidir. Uygulamaları farklı PHP sürümlerine karşı test etmeniz gerektiğinde sürüm yöneticilerini kullanın.
Sonuç
Artık Ubuntu üzerinde Apache ve Nginx web sunucularını destekleyen, tamamen yapılandırılmış bir PHP 8.1 geliştirme ortamına sahipsiniz. Kurulumunuz gerekli PHP uzantılarını, bağımlılık yönetimi için Composer'ı ve yerel geliştirme için uygun yapılandırmayı içerir.
Bir sonraki projenize başlamadan önce, sözdizimi vurgulama, hata ayıklama ve IntelliSense desteği için PHP uzantılarıyla birlikte VS Code gibi bir Entegre Geliştirme Ortamı (IDE) kurmayı düşünebilirsiniz.
Ortamınız hazır olduğuna göre, PHP geliştirmeyi daha fazla keşfedebilirsiniz:
- PHP ile Temel Bilgileri Öğrenin: PHP’de Dizelerle Çalışma
- PHP'de Web API'lerini Kullanma konusunda API'ler oluşturun
- PHP'de Fonksiyonların Nasıl Kullanılacağını Anlamak
- Ubuntu'da PostgreSQL Kurulumu ve Kullanımı ile Veritabanları Kurun
Üretim dağıtımları için, PHP uygulamalarınızı GitHub üzerinden doğrudan otomatik ölçeklendirme ve SSL sertifikalarıyla dağıtmak adına Linux-Console.net Uygulama Platformunu kullanmayı düşünebilirsiniz.
Linux-Console.net Topluluğu ile öğrenme sürecine katıldığınız için teşekkürler.

