php.ini dosyası nerede bulunur?

PHP, web dünyasının en popüler sunucu taraflı programlama dillerinden biridir ve birçok web sitesinin temelini oluşturur. PHP uygulamalarının davranışını, performansını ve güvenliğini doğrudan etkileyen kritik bir dosya vardır: php.ini. Bu dosya, PHP’nin çalışma zamanı yapılandırmasını içerir ve bellek limitlerinden hata raporlamaya, dosya yükleme boyutlarından veritabanı bağlantı ayarlarına kadar her şeyi kontrol eder. Ancak, bu kadar önemli bir dosyanın tam olarak nerede bulunduğunu bilmek, özellikle farklı işletim sistemleri ve web sunucusu kurulumları arasında değişiklik gösterdiği için bazen kafa karıştırıcı olabilir. Bu blog yazısında, php.ini dosyasının ne işe yaradığını, neden önemli olduğunu ve çeşitli senaryolarda bu kritik yapılandırma dosyasını nasıl bulabileceğinizi adım adım ele alacağız.

php.ini Dosyasının Önemi Nedir?

php.ini dosyası, PHP yorumlayıcısının temel çalışma prensiplerini belirleyen ana yapılandırma dosyasıdır. Bu dosya sayesinde geliştiriciler ve sistem yöneticileri, PHP’nin sistem kaynaklarını nasıl kullanacağını, hataları nasıl ele alacağını ve güvenlik politikalarını nasıl uygulayacağını kontrol edebilirler. Yanlış bir yapılandırma, uygulamanızın performans sorunları yaşamasına, güvenlik açıklarının oluşmasına veya belirli işlevlerin beklendiği gibi çalışmamasına neden olabilir. İşte php.ini dosyasının kontrol ettiği başlıca alanlardan bazıları:

  • Kaynak Yönetimi:
    • memory_limit: Bir betiğin kullanabileceği maksimum bellek miktarını belirler. Büyük uygulamalar veya yoğun veri işleme süreçleri için önemlidir.
    • max_execution_time: Bir betiğin çalışmasına izin verilen maksimum süreyi (saniye cinsinden) belirler. Uzun süren işlemlerin yarıda kesilmemesi için ayarlanabilir.
    • post_max_size: POST metoduyla gönderilebilecek maksimum veri boyutunu belirler.
    • upload_max_filesize: Yüklenen bir dosyanın maksimum boyutunu belirler.
  • Hata Raporlama ve Günlükleme:
    • display_errors: Hataların doğrudan tarayıcıya gösterilip gösterilmeyeceğini kontrol eder. Genellikle geliştirme ortamında ‘On’, üretim ortamında ‘Off’ olarak ayarlanır.
    • log_errors: Hataların sunucu hata günlük dosyasına yazılıp yazılmayacağını kontrol eder.
    • error_log: Hata günlüklerinin yazılacağı dosyanın yolunu belirler.
  • Güvenlik Ayarları:
    • allow_url_fopen: PHP’nin uzak dosyaları URL aracılığıyla açıp açamayacağını kontrol eder. Güvenlik açıkları potansiyeli nedeniyle dikkatli kullanılmalıdır.
    • expose_php: PHP sürüm bilgisinin HTTP başlıklarında görünmesini kontrol eder. Güvenlik açısından ‘Off’ olarak ayarlanması önerilir.
  • Modüller ve Uzantılar:
    • extension=: Belirli PHP uzantılarının (örneğin, MySQLi, GD, cURL) etkinleştirilmesini sağlar.

Görüldüğü gibi, php.ini dosyasını doğru bir şekilde yapılandırmak, PHP uygulamalarınızın sağlığı ve güvenliği için hayati önem taşır. Bu nedenle, nerede bulunduğunu bilmek ve gerektiğinde düzenleyebilmek her PHP geliştiricisi ve sunucu yöneticisi için temel bir beceridir.

php.ini Dosyasını Bulmanın Yolları

php.ini dosyasının konumu, işletim sisteminize, PHP kurulum yönteminize ve kullandığınız web sunucusuna göre büyük farklılıklar gösterebilir. Ancak, bu dosyayı bulmak için kullanabileceğiniz birkaç güvenilir yöntem bulunmaktadır.

1. phpinfo() Fonksiyonu ile Bulma (En Kolay Yöntem)

Bu, php.ini dosyasının tam konumunu bulmak için en yaygın ve genellikle en kolay yöntemdir. Aşağıdaki adımları izleyerek bu yöntemi uygulayabilirsiniz:

  1. Web sunucunuzun kök dizininde (örneğin, Apache için htdocs, Nginx için html) yeni bir PHP dosyası oluşturun. Bu dosyaya örneğin info.php adını verebilirsiniz.
  2. Oluşturduğunuz info.php dosyasının içine aşağıdaki kodu yazın ve kaydedin:
    <?php
    phpinfo();
    ?>
  3. Web tarayıcınızı açın ve bu dosyaya gidin (örneğin, http://localhost/info.php veya http://yourdomain.com/info.php).
  4. Açılan sayfada, PHP yapılandırmanızla ilgili detaylı bilgiler göreceksiniz. Sayfada “Loaded Configuration File” veya “Configuration File (php.ini) Path” başlıklı bir bölüm arayın. Bu bölümde php.ini dosyasının tam yolunu bulacaksınız.
  5. Ayrıca, “Scan this dir for additional .ini files” ve “Additional .ini files parsed” bölümleri, PHP’nin yüklediği ek yapılandırma dosyalarını ve bunların bulunduğu dizinleri de gösterecektir. Bu, modüller tarafından eklenen veya ortam spesifik ayarların yapıldığı ek dosyaları bulmanıza yardımcı olur.

Önemli Not: Güvenlik nedeniyle, üretim ortamında phpinfo() dosyasını açık bırakmaktan kaçının. İşiniz bittiğinde bu dosyayı sunucudan silmeniz veya erişimini kısıtlamanız şiddetle tavsiye edilir, çünkü hassas sunucu bilgilerini ifşa edebilir.

2. Komut Satırı (CLI) ile Bulma

Eğer sunucunuza SSH erişiminiz varsa veya yerel makinenizde komut satırını kullanıyorsanız, PHP CLI (Command Line Interface) aracılığıyla da php.ini dosyasının konumunu öğrenebilirsiniz. Bu yöntem, özellikle web sunucusundan bağımsız olarak PHP’nin komut satırı sürümünün yapılandırma dosyasını bulmak için kullanışlıdır.

  1. Terminal veya Komut İstemi’ni açın.
  2. Aşağıdaki komutu çalıştırın:
    php --ini
  3. Komutun çıktısında, php.ini dosyasının yüklendiği konumu göreceksiniz. Genellikle şöyle bir çıktı alırsınız:
    • Configuration File (php.ini) Path: /etc/php/X.Y/cli (PHP’nin ana yapılandırma dosyası)
    • Loaded Configuration File: /etc/php/X.Y/cli/php.ini (Gerçekte yüklenen php.ini dosyası)
    • Scan for additional .ini files in: /etc/php/X.Y/cli/conf.d (Ek ini dosyalarını taradığı dizin)
    • Additional .ini files parsed: /etc/php/X.Y/cli/conf.d/10-opcache.ini, /etc/php/X.Y/cli/conf.d/20-mysqli.ini (Yüklenen ek ini dosyaları)

Unutmayın ki CLI için kullanılan php.ini dosyası, web sunucunuz (Apache, Nginx) tarafından kullanılan php.ini dosyasından farklı olabilir. PHP’nin farklı sürümleri veya farklı SAPI (Server Application Programming Interface) modları için birden fazla php.ini dosyası bulunabilir.

3. Yaygın Konumları Kontrol Etme

PHP kurulumunuzun nasıl yapıldığına bağlı olarak, php.ini dosyası genellikle belirli standart dizinlerde bulunur. Eğer yukarıdaki yöntemlerle bulamazsanız, bu yaygın konumları manuel olarak kontrol edebilirsiniz:

  • Linux/Unix Benzeri Sistemlerde:
    • /etc/php/X.Y/apache2/php.ini (Apache ile kullanılıyorsa, X.Y PHP sürümünü belirtir)
    • /etc/php/X.Y/fpm/php.ini (PHP-FPM ile kullanılıyorsa, Nginx veya Apache FPM modunda)
    • /etc/php/X.Y/cli/php.ini (Komut satırı PHP için)
    • /etc/php.ini (Bazen genel bir konum olabilir)
    • /usr/local/php/php.ini veya /usr/local/lib/php.ini
    • XAMPP gibi paketler için: /opt/lampp/etc/php.ini
    • CPanel veya benzeri hosting panellerinde genellikle /usr/local/lib/php.ini veya kullanıcının ev dizini içinde bir yerde olabilir.
  • Windows Sistemlerinde:
    • C:\php\php.ini (Manuel PHP kurulumlarında)
    • XAMPP için: C:\xampp\php\php.ini
    • WAMP için: C:\wamp\bin\php\phpX.Y.Z\php.ini (X.Y.Z PHP sürümünü belirtir)

Bu yollar sadece yaygın konumlar olup, sizin sisteminizde farklılık gösterebilir. En doğru sonuç için her zaman phpinfo() veya php --ini yöntemlerini kullanmanız önerilir.

4. Web Sunucusu Yapılandırmasını Kontrol Etme

Daha karmaşık kurulumlarda, özellikle PHP-FPM kullanıldığında, web sunucusunun (Apache veya Nginx) yapılandırma dosyaları php.ini dosyasının hangi PHP sürümüyle yüklendiğine dair ipuçları verebilir. Web sunucunuzun yapılandırma dosyasında (örneğin Apache için httpd.conf veya virtual host dosyaları, Nginx için nginx.conf veya server blokları) PHP FPM soketine veya FastCGI işlemine yapılan referansları arayabilirsiniz. Bu referanslar, belirli bir PHP sürümüne işaret edecek ve bu sürümün varsayılan php.ini dosyasını kullanacaktır.

Farklı PHP Ortamlarında php.ini Konumları

Kurulum paketleri ve işletim sistemleri farklılık gösterdiğinden, php.ini dosyasının konumları da değişir. İşte en yaygın ortamlar için bazı örnekler:

Apache ile Kullanım

Apache web sunucusu ile PHP kullanıyorsanız, PHP genellikle iki farklı şekilde entegre edilebilir: mod_php veya PHP-FPM aracılığıyla.

  • mod_php (DSO): Bu eski ve daha basit entegrasyonda, php.ini dosyası genellikle Apache’nin PHP modülü yüklendiğinde doğrudan okunur. Konum genellikle /etc/php/X.Y/apache2/php.ini şeklindedir.
  • PHP-FPM: Daha modern ve performanslı bir yöntem olan PHP-FPM kullanıldığında, php.ini dosyası PHP-FPM servisi tarafından yüklenir. Apache, istekleri PHP-FPM’ye bir soket veya TCP portu üzerinden iletir. Bu durumda php.ini konumu genellikle /etc/php/X.Y/fpm/php.ini olur.

Nginx ile Kullanım

Nginx, kendi başına PHP betiklerini işleyemez ve neredeyse her zaman PHP-FPM ile birlikte kullanılır. Dolayısıyla, Nginx ile PHP kullanıyorsanız, PHP yapılandırma dosyanızın konumu genellikle /etc/php/X.Y/fpm/php.ini olacaktır. Nginx yapılandırma dosyanız (nginx.conf veya site yapılandırmaları) genellikle PHP FPM soketine veya adresine işaret eder.

CLI (Komut Satırı Arayüzü)

Daha önce de belirttiğimiz gibi, komut satırı PHP’si (CLI) genellikle web sunucusu PHP’sinden ayrı bir php.ini dosyası kullanır. Bu durum, özellikle cron job’ları veya sunucuda çalışan arka plan betikleri için önemlidir. CLI php.ini dosyası genellikle /etc/php/X.Y/cli/php.ini konumunda bulunur.

XAMPP, WAMP, MAMP gibi Paketler

Yerel geliştirme ortamları için kullanılan bu hepsi bir arada paketler, genellikle PHP, Apache (veya Nginx), MySQL ve diğer bileşenleri tek bir kurulumda sunar. Bu paketlerin her birinin kendi php.ini konumu vardır ve genellikle kendi kurulum dizinleri içinde yer alır:

  • XAMPP: Windows, macOS ve Linux’ta en yaygın kullanılanlardan biridir. php.ini dosyası genellikle [XAMPP_KURULUM_DİZİNİ]/php/php.ini konumundadır. Örneğin, Windows’ta C:\xampp\php\php.ini.
  • WAMP: Windows için popüler bir pakettir. php.ini dosyası genellikle [WAMP_KURULUM_DİZİNİ]\bin\php\phpX.Y.Z\php.ini şeklindedir. Burada X.Y.Z kurulu PHP sürümünü temsil eder.
  • MAMP: macOS için yaygın olarak kullanılır. php.ini dosyası genellikle /Applications/MAMP/bin/php/phpX.Y.Z/conf/php.ini konumunda bulunur.

Bu paketlerin her birinin kendi kontrol panelleri aracılığıyla PHP yapılandırma dosyasına hızlı erişim sağlayan kısayolları da olabilir.

php.ini Dosyasını Düzenleme ve Değişiklikleri Uygulama

php.ini dosyasının konumunu bulduktan sonra, herhangi bir metin düzenleyici (örneğin, Nano, Vim, VS Code, Notepad++) kullanarak bu dosyayı açıp düzenleyebilirsiniz. Düzenleme yaparken aşağıdaki noktalara dikkat etmelisiniz:

  • Yorum Satırları: php.ini dosyasındaki noktalı virgül (;) ile başlayan satırlar yorum satırlarıdır ve PHP tarafından okunmazlar. Bir ayarı etkinleştirmek veya değiştirmek için yorum işaretini kaldırmanız veya değeri düzenlemeniz gerekir.
  • Değerler: Ayarlar genellikle ayar_adı = değer formatındadır. Değerler sayısal, boolean (On/Off, 1/0, True/False) veya metin tabanlı olabilir.
  • Yedekleme: Herhangi bir değişiklik yapmadan önce, orijinal php.ini dosyasının bir yedeğini almayı unutmayın. Bu, yanlış bir yapılandırma durumunda kolayca geri dönebilmenizi sağlar. Örneğin, sudo cp php.ini php.ini.bak komutunu kullanabilirsiniz.

php.ini dosyasında yaptığınız değişikliklerin aktif olması için genellikle web sunucunuzu veya PHP-FPM servisini yeniden başlatmanız gerekir. Sadece dosyayı kaydetmek yeterli olmayacaktır. Yeniden başlatma komutları işletim sisteminize ve sunucu türünüze göre değişir:

  • Apache için (Linux):
    • sudo systemctl restart apache2
    • veya sudo service apache2 restart
  • Nginx ve PHP-FPM için (Linux):
    • sudo systemctl restart nginx
    • sudo systemctl restart phpX.Y-fpm (Burada X.Y, PHP sürümünüzü belirtir, örneğin php7.4-fpm)
    • veya sudo service nginx restart ve sudo service phpX.Y-fpm restart
  • XAMPP, WAMP, MAMP için: Bu paketlerin kendi kontrol panelleri vardır. Kontrol paneli üzerinden Apache ve MySQL servislerini durdurup yeniden başlatarak değişiklikleri uygulayabilirsiniz.

Değişikliklerin uygulandığını doğrulamak için, yeniden phpinfo() sayfasını kontrol edebilir ve yaptığınız ayarların yeni değerlerini yansıtıp yansıtmadığını görebilirsiniz.

Sonuç

php.ini dosyası, PHP uygulamalarınızın omurgasıdır ve bu dosyanın nerede bulunduğunu bilmek, herhangi bir PHP geliştiricisi veya sunucu yöneticisi için temel bir bilgidir. PHP’nin nasıl çalıştığını, hangi kaynakları kullandığını ve ne tür hatalar verdiğini anlamak için bu dosyanın yapılandırması kritik öneme sahiptir. Bu rehberde ele aldığımız phpinfo() fonksiyonu, php --ini komutu ve yaygın dizin kontrol yöntemleri sayesinde, php.ini dosyasını bulmak artık sizin için bir sorun olmaktan çıkacaktır.

Unutmayın, yapılandırma dosyasında yapılan her değişiklik, PHP ortamınızın davranışını doğrudan etkiler. Bu nedenle, her zaman dikkatli olun, değişiklik yapmadan önce bir yedek alın ve değişiklikleri uyguladıktan sonra ilgili servisleri yeniden başlatmayı unutmayın. Doğru bir php.ini yapılandırması ile uygulamalarınızın hem performansını artırabilir hem de güvenliğini sağlayabilirsiniz.

Yorum bırakın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Scroll to Top