PHP, web geliştirme dünyasının en yaygın kullanılan dillerinden biridir ve gücünü esnekliğinden alır. Bu esnekliğin merkezinde ise php.ini dosyası yer alır. Bu yapılandırma dosyası, PHP’nin nasıl çalışacağını, kaynakları nasıl kullanacağını, hataları nasıl raporlayacağını ve güvenlik önlemlerini nasıl uygulayacağını belirleyen yüzlerce direktife ev sahipliği yapar. İster basit bir blog sitesi yönetiyor olun, ister karmaşık bir e-ticaret platformu geliştiriyor olun, php.ini dosyasının inceliklerini anlamak, sitenizin performansını, güvenliğini ve kararlılığını doğrudan etkiler. Bu dosya, PHP motorunun adeta anayasasıdır ve sunucu üzerindeki davranışlarını en temel seviyede kontrol etmenize olanak tanır.
İçerik Tablosu
PHP’nin Temel Yapılandırma Dosyası: php.ini
PHP’nin çalışma şeklini yöneten bu merkezi yapılandırma dosyası, sunucu yöneticileri ve geliştiriciler için en önemli araçlardan biridir. PHP’nin çekirdek fonksiyonlarından eklenti ayarlarına kadar geniş bir yelpazede kontrol imkanı sunarak, uygulamaların sunucu ortamıyla uyumlu ve verimli çalışmasını sağlar. Bu dosya olmadan, PHP’nin her bir ayarını kod içerisinden veya sunucu genelinde tek tek yönetmek oldukça karmaşık hale gelirdi.
php.ini Dosyası Nedir ve Ne İşe Yarar?
php.ini, PHP’nin başlangıç (initialization) sırasında okuduğu ve sunucu üzerindeki çalışma prensiplerini belirlediği metin tabanlı bir yapılandırma dosyasıdır. Bu dosya, bir PHP betiği çalıştığında hangi ayarların geçerli olacağını tanımlar. Örneğin, bir kullanıcının ne kadar büyük bir dosya yükleyebileceğini, bir betiğin ne kadar süre çalışabileceğini veya ekranda hata mesajlarının gösterilip gösterilmeyeceğini bu dosya üzerinden kontrol edebilirsiniz. Kısacası, PHP’nin sunucu kaynaklarını nasıl kullanacağını ve dış dünya ile nasıl etkileşim kuracağını düzenleyen bir kurallar bütünüdür.
PHP Çalışma Zamanı (Runtime) Davranışlarını Kontrol Etmedeki Rolü
PHP, bir web sunucusu tarafından yorumlandığında, çalışma zamanı (runtime) adı verilen bir ortamda çalışır. php.ini dosyası, bu ortamın davranışlarını A’dan Z’ye şekillendirir. Örneğin, memory_limit direktifi ile bir betiğin ne kadar bellek kullanabileceğini sınırlar, max_execution_time ile betiğin ne kadar süre çalışabileceğini belirlersiniz. Bu direktifler, sunucu kaynaklarının kötü amaçlı veya verimsiz yazılmış kodlar tarafından tüketilmesini engelleyerek sistemin genel kararlılığını korur. Aynı zamanda, uygulamanızın özel ihtiyaçlarına göre bu limitleri artırmanıza da olanak tanır.
Sunucu Performansı ve Güvenliği Üzerindeki Etkisi
Doğru yapılandırılmış bir php.ini dosyası, sunucu performansını ve güvenliğini önemli ölçüde artırabilir. Örneğin, opcache gibi eklentileri etkinleştirerek ve doğru şekilde yapılandırarak PHP kodunun daha hızlı çalışmasını sağlayabilirsiniz. Güvenlik tarafında ise, disable_functions direktifi ile tehlikeli olabilecek fonksiyonları devre dışı bırakabilir, expose_php direktifini kapatarak sunucunuzun PHP sürümünü gizleyebilir ve saldırı yüzeyini azaltabilirsiniz. Bu ayarlar, sitenizi yaygın güvenlik zafiyetlerine karşı daha dirençli hale getirir.
php.ini Dosyasını Bulma ve Erişme Yöntemleri
php.ini dosyasında değişiklik yapabilmenin ilk adımı, ona nerede ve nasıl erişeceğinizi bilmektir. Dosyanın konumu, sunucunun işletim sistemine, kullanılan kontrol paneline ve PHP’nin nasıl kurulduğuna bağlı olarak değişiklik gösterebilir. Neyse ki bu dosyayı bulmak için kullanılabilecek birkaç standart yöntem mevcuttur.
`phpinfo()` Fonksiyonu ile Aktif Yapılandırma Dosyasının Yolunu Öğrenme
php.ini dosyasının tam yolunu öğrenmenin en kolay ve en kesin yolu, phpinfo() fonksiyonunu kullanmaktır. Bunun için sunucunuzda info.php gibi bir dosya oluşturun ve içine aşağıdaki kodu ekleyin:
<?php phpinfo(); ?>
Bu dosyayı bir tarayıcıda açtığınızda, PHP yapılandırmanızla ilgili detaylı bir sayfa göreceksiniz. Sayfanın üst kısımlarında, “Loaded Configuration File” satırı, o an sunucunuzun kullandığı php.ini dosyasının tam yolunu size gösterecektir. Bu yöntem, özellikle birden fazla php.ini dosyasının olabileceği karmaşık sunucu kurulumlarında doğru dosyayı bulmak için hayat kurtarıcıdır.
Farklı İşletim Sistemlerindeki (Linux, Windows) Varsayılan Konumları
Her ne kadar phpinfo() en güvenilir yöntem olsa da, işletim sistemlerine göre varsayılan konumları bilmek de işinizi kolaylaştırabilir:
- Linux (Debian/Ubuntu): Genellikle
/etc/php/[version]/apache2/php.ini(Apache için) veya/etc/php/[version]/fpm/php.ini(PHP-FPM için) yollarında bulunur. - Linux (CentOS/RHEL): Genellikle
/etc/php.iniveya/etc/php.d/klasöründe bulunur. - Windows: PHP’nin kurulu olduğu dizinde (örneğin
C:\php\php.ini) yer alır. Bazen varsayılan olarakphp.ini-developmentveyaphp.ini-productionisimli şablon dosyalar bulunur ve bunlardan birinin adınıphp.iniolarak değiştirerek aktif hale getirmeniz gerekir.
Paylaşımlı Hosting Ortamlarında ve Kontrol Panellerinde (cPanel, Plesk) Erişim
Paylaşımlı hosting ortamlarında, sunucunun ana php.ini dosyasına genellikle doğrudan erişim izni verilmez. Ancak, çoğu hosting firması, kullanıcıların kendi hesapları için PHP ayarlarını düzenlemesine olanak tanıyan arayüzler sunar.
cPanel: “MultiPHP INI Editor” veya “Select PHP Version” gibi araçlar üzerinden yaygın direktifleri kolayca düzenleyebilirsiniz.
Plesk: “PHP Settings” bölümü altında, her bir domain için özel php.ini ayarları yapmanıza imkan tanır.
Bu paneller, teknik bilgisi az olan kullanıcıların bile güvenli bir şekilde PHP yapılandırmasını yönetmesini sağlar.
Komut Satırı (CLI) ve Web Sunucusu (FPM, Apache) İçin Ayrı Dosyaların Varlığı
Unutulmaması gereken önemli bir nokta, komut satırından (CLI – Command Line Interface) çalıştırılan PHP betiklerinin, web sunucusu üzerinden (Apache, Nginx vb.) çalıştırılan betiklerden farklı bir php.ini dosyası kullanabileceğidir. CLI için yapılandırma dosyası genellikle /etc/php/[version]/cli/php.ini gibi bir yolda bulunurken, web sunucusu yapılandırması yukarıda belirtilen apache2 veya fpm klasörlerinde yer alır. Bu ayrım, komut satırı görevleri için farklı limitler (örneğin daha uzun max_execution_time) belirlemenize olanak tanır.
php.ini Dosyasının Yapısı ve Sözdizimi
php.ini dosyası, basit ve anlaşılır bir sözdizimine sahiptir. Yapısı, temel olarak direktifler, değerler, yorumlar ve bölümlerden oluşur. Bu yapıyı anlamak, dosyayı doğru bir şekilde düzenlemenin ve istediğiniz değişiklikleri hatasız bir şekilde uygulamanın anahtarıdır.
Direktifler (Directives): Ayarların Anahtarları
Direktifler, PHP’nin davranışını kontrol eden belirli ayarların isimleridir. Her direktif, bir anahtar-değer çiftinin anahtarını temsil eder. Örneğin, memory_limit bir direktiftir ve bir betiğin kullanabileceği maksimum bellek miktarını belirler. Direktifler büyük-küçük harfe duyarlı değildir, ancak genellikle okunabilirlik açısından küçük harflerle yazılırlar.
Değerler (Values): Direktiflere Atanan Parametreler
Her direktifin bir değeri bulunur. Değerler, direktifin ne yapacağını belirten parametrelerdir. Değerler farklı türlerde olabilir:
- Sayısal (Numeric): Örneğin,
max_execution_time = 30(saniye cinsinden). - Dize (String): Örneğin,
error_log = "/var/log/php_errors.log"(dosya yolu). - Boolean (Mantıksal): Genellikle
On/Off,True/Falseveya1/0gibi değerler alırlar. Örneğin,display_errors = Off. - Önceden Tanımlı Sabitler: Bazı direktifler, PHP tarafından tanımlanmış özel sabitler alır. Örneğin,
error_reporting = E_ALL & ~E_NOTICE. - Veri Boyutu Kısaltmaları: Bellek ve dosya boyutu gibi direktiflerde
K(Kilobyte),M(Megabyte) veG(Gigabyte) gibi kısaltmalar kullanılabilir. Örneğin,upload_max_filesize = 64M.
Yorum Satırları (Comments): Ayarları Açıklama ve Geçici Olarak Devre Dışı Bırakma
php.ini dosyasında, bir satırın başına noktalı virgül (;) koyarak o satırı yorum haline getirebilirsiniz. Yorum satırları PHP tarafından işlenmez ve dikkate alınmaz. Bu özellik iki temel amaç için kullanılır:
- Açıklama Ekleme: Yaptığınız bir değişikliğin nedenini veya bir direktifin ne işe yaradığını açıklamak için yorum satırları ekleyebilirsiniz. Bu, gelecekte dosyayı tekrar düzenlediğinizde size veya başka bir geliştiriciye yardımcı olur.
- Geçici Devre Dışı Bırakma: Bir ayarı silmek yerine geçici olarak devre dışı bırakmak istediğinizde, satırın başına noktalı virgül koymanız yeterlidir. Bu, ayarı daha sonra kolayca geri almanızı sağlar.
Örnek: ; display_errors = On
Bölümler (Sections): Belirli Uzantılar İçin Yapılandırma Grupları
php.ini dosyası, köşeli parantez ([]) içinde belirtilen bölümlere ayrılabilir. Bu bölümler, genellikle belirli bir uzantı veya sunucu API’si (SAPI) için özel yapılandırma grupları oluşturmak amacıyla kullanılır. Örneğin, [opcache] bölümü altındaki direktifler, yalnızca Zend OPcache uzantısı için geçerli olacaktır. Bu yapı, ayarların daha organize ve yönetilebilir olmasını sağlar.
Kritik ve Sık Kullanılan php.ini Direktifleri
php.ini dosyasında yüzlerce direktif bulunsa da, günlük geliştirme ve sunucu yönetimi süreçlerinde birkaçı diğerlerinden daha sık karşımıza çıkar. Bu direktifler, kaynak yönetimi, hata ayıklama ve güvenlik gibi en temel alanları kontrol eder. Bu kritik ayarları anlamak, birçok yaygın sorunu çözmenize ve uygulamanızın daha kararlı çalışmasını sağlamanıza yardımcı olacaktır.
Kaynak Kullanımı ve Limit Ayarları
Bu direktifler, PHP betiklerinin sunucu kaynaklarını (bellek, işlemci zamanı) ne kadar ve nasıl kullanabileceğini sınırlar. Yanlış yapılandırıldıklarında performans sorunlarına veya sunucunun çökmesine neden olabilirler.
`memory_limit`
Bir PHP betiğinin çalışması sırasında ayırabileceği maksimum bellek miktarını belirler. Genellikle 128M veya 256M gibi değerler kullanılır. WordPress gibi içerik yönetim sistemleri veya büyük veri işleyen uygulamalar daha yüksek limitlere ihtiyaç duyabilir.
`max_execution_time`
Bir betiğin, zaman aşımına uğrayıp sonlandırılmadan önce çalışabileceği maksimum süreyi saniye cinsinden tanımlar. Varsayılan değeri genellikle 30 saniyedir. Uzun süren veri içe aktarma veya rapor oluşturma gibi işlemler için bu süreyi artırmak gerekebilir.
`max_input_time`
Bir betiğin, POST veya GET gibi istek verilerini ayrıştırmak için harcayabileceği maksimum süreyi saniye cinsinden belirler. Genellikle yavaş ağ bağlantılarında büyük form verileri gönderildiğinde önem kazanır.
`post_max_size`
Bir POST isteği ile gönderilebilecek verinin maksimum boyutunu belirler. Bu değer, upload_max_filesize direktifinden büyük olmalıdır, çünkü dosya yüklemeleri de POST isteği ile yapılır ve bu istek ek bilgiler içerir.
`upload_max_filesize`
Tek bir HTTP isteği ile yüklenebilecek en büyük dosya boyutunu tanımlar. Yüksek çözünürlüklü resimler veya videolar gibi büyük dosyaların yüklenmesine izin vermek için bu değeri artırmanız gerekir.
| Direktif | Açıklama | Örnek Değer | İlişkili Direktifler |
|---|---|---|---|
| memory_limit | Betik başına maksimum bellek kullanımı. | 256M | – |
| max_execution_time | Betik başına maksimum çalışma süresi (saniye). | 60 | – |
| upload_max_filesize | Yüklenebilecek tek bir dosyanın maksimum boyutu. | 64M | post_max_size |
| post_max_size | POST isteğinin toplam maksimum boyutu. | 70M | upload_max_filesize |
Hata Raporlama ve Günlükleme (Logging) Ayarları
Bu ayarlar, PHP’nin karşılaştığı hataları nasıl ele alacağını kontrol eder. Geliştirme ortamında hataları görmek istenirken, canlı (production) ortamda bu hataların kullanıcılara gösterilmesi hem güvenlik açığı yaratır hem de kötü bir kullanıcı deneyimi sunar.
`error_reporting`
Hangi seviyedeki hataların raporlanacağını belirler. Geliştirme ortamında tüm hataları görmek için E_ALL, canlı ortamda ise kritik olmayan uyarıları (notice) gizlemek için E_ALL & ~E_NOTICE gibi değerler kullanılabilir.
`display_errors`
Raporlanan hataların ekrana (HTML çıktısına) basılıp basılmayacağını kontrol eder. Geliştirme ortamında On, canlı ortamda ise kesinlikle Off olmalıdır.
`display_startup_errors`
PHP’nin başlangıç aşamasında meydana gelen (örneğin bir modül yüklenemediğinde) hataların ekranda gösterilip gösterilmeyeceğini belirler. display_errors gibi, canlı ortamda kapalı tutulmalıdır.
`log_errors`
Hataların ekrana basılması yerine bir dosyaya veya sistem günlüğüne kaydedilip edilmeyeceğini kontrol eder. Canlı ortamda On olarak ayarlanması, sorunları takip edebilmek için kritik öneme sahiptir.
`error_log`
log_errors direktifi aktif olduğunda, hataların kaydedileceği dosyanın yolunu belirtir. Örneğin: /var/log/httpd/php_error_log.
Güvenlik Odaklı Direktifler
Bu direktifler, sunucunuzu ve PHP uygulamalarınızı yaygın saldırı vektörlerine karşı korumak için kullanılır.
`disable_functions` ve `disable_classes`
Güvenlik riski oluşturabilecek belirli PHP fonksiyonlarını (örn: exec, shell_exec, system) veya sınıfları tamamen devre dışı bırakmanızı sağlar. Bu, özellikle paylaşımlı Linux hosting ortamlarında çok önemlidir.
`expose_php`
HTTP başlıklarında sunucunun PHP kullandığını ve sürüm bilgisini gösteren imzayı (örn: X-Powered-By: PHP/8.1.5) kaldırır. Bu bilginin gizlenmesi, sürüm bazlı saldırıları zorlaştırır. Değeri Off olmalıdır.
`allow_url_fopen`
PHP’nin dosya fonksiyonlarının (fopen(), file_get_contents() vb.) URL’leri birer dosya gibi açmasına izin verip vermeyeceğini kontrol eder. Uzak sunuculardan dosya çekme ihtiyacınız yoksa güvenlik nedeniyle Off olarak ayarlanması tavsiye edilir.
`allow_url_include`
include ve require gibi fonksiyonların uzak URL’lerden dosya dahil etmesine izin verir. Bu ayar son derece tehlikelidir ve Uzaktan Kod Çalıştırma (RCE) zafiyetlerine yol açabilir. Neredeyse her zaman Off olmalıdır.
`session.cookie_httponly` ve `session.cookie_secure`
session.cookie_httponly ayarı On yapıldığında, oturum çerezlerine JavaScript üzerinden erişimi engeller, bu da XSS saldırılarına karşı koruma sağlar. session.cookie_secure ise çerezlerin sadece güvenli (HTTPS) bağlantılar üzerinden gönderilmesini zorunlu kılarak ortadaki adam (MITM) saldırılarını önler. Her ikisinin de On olması önerilir.
Dosya Yüklemeleri (File Uploads) ile İlgili Ayarlar
Kullanıcıların sitenize dosya yüklemesine izin veriyorsanız, bu ayarların doğru yapılandırılması gerekir.
`file_uploads`
HTTP üzerinden dosya yüklemelerinin etkin olup olmadığını belirler. Dosya yükleme işlevselliği için On olmalıdır.
`upload_tmp_dir`
Yüklenen dosyaların, işlenmeden önce geçici olarak saklanacağı dizini belirtir. Belirtilmezse, sistemin varsayılan geçici dizini kullanılır.
`max_file_uploads`
Tek bir istekte aynı anda yüklenebilecek maksimum dosya sayısını sınırlar. Varsayılan değeri genellikle 20’dir.
Oturum Yönetimi (Session Handling) Ayarları
Kullanıcı oturumlarının (sessions) nasıl yönetileceğini ve saklanacağını kontrol eden direktiflerdir.
`session.save_handler`
Oturum verilerinin nasıl saklanacağını belirler. Varsayılan değer files‘dır, yani veriler dosya sisteminde saklanır. Yüksek trafikli siteler için memcached veya redis gibi daha performanslı seçenekler de kullanılabilir.
`session.save_path`
session.save_handler direktifi files olarak ayarlandığında, oturum dosyalarının saklanacağı dizini belirtir. Sunucu güvenliği için bu dizinin web kök dizini (public_html) dışına taşınması önerilir.
`session.gc_maxlifetime`
Bir oturumun ne kadar süre (saniye cinsinden) boyunca aktif kalacağını belirler. Bu süre dolduğunda, oturum verileri “çöp” olarak işaretlenir ve PHP’nin çöp toplayıcısı (garbage collector) tarafından silinebilir.
php.ini Değişikliklerini Yapma ve Uygulama
php.ini dosyasını bulup içeriğini anladıktan sonraki adım, değişiklikleri yapmak ve bu değişikliklerin sunucu tarafından tanınmasını sağlamaktır. Değişiklik yapma yöntemi, sahip olduğunuz erişim yetkilerine ve barındırma ortamınıza göre farklılık gösterebilir.
Doğrudan Dosyayı Düzenleyerek Değişiklik Yapma
Eğer bir VPS, VDS veya kiralık sunucu üzerinde tam kök (root) erişiminiz varsa, php.ini dosyasını doğrudan düzenleyebilirsiniz. SSH üzerinden sunucunuza bağlanıp nano, vim gibi bir metin düzenleyici ile dosyayı açarak istediğiniz direktifleri değiştirebilirsiniz. Örneğin: sudo nano /etc/php/8.1/fpm/php.ini. Bu yöntem en esnek olanıdır ancak dikkatli olmayı gerektirir, çünkü yapılacak bir sözdizimi hatası PHP’nin tamamen çalışmamasına neden olabilir.
Hosting Kontrol Panelleri Üzerinden Değişiklik Yapma
Paylaşımlı hosting kullanıcıları için en yaygın ve güvenli yöntem budur. cPanel’deki “MultiPHP INI Editor” veya Plesk’teki “PHP Settings” gibi arayüzler, en sık değiştirilen direktifleri bir form aracılığıyla sunar. Bu arayüzler, değerleri sizin için doğru formata sokar ve sözdizimi hatalarını önler. Ayrıca, genellikle her site için ayrı PHP ayarları yapmanıza olanak tanıyarak büyük bir esneklik sunarlar.
Değişikliklerin Geçerli Olması İçin Web Sunucusunu Yeniden Başlatma (Restart)
php.ini dosyasında yapılan değişiklikler anında geçerli olmaz. PHP, bu dosyayı yalnızca başlangıçta okur. Bu nedenle, yaptığınız değişikliklerin aktif hale gelmesi için ilgili PHP hizmetinin yeniden başlatılması gerekir. Eğer PHP’yi Apache modülü olarak kullanıyorsanız Apache’yi, PHP-FPM kullanıyorsanız PHP-FPM hizmetini yeniden başlatmalısınız. Paylaşımlı hosting kontrol panelleri genellikle bu işlemi sizin yerinize otomatik olarak yapar.
- Apache için:
sudo systemctl restart apache2 - PHP-FPM için:
sudo systemctl restart php8.1-fpm
Yapılandırmayı Kod İçerisinden Anlık Değiştirme: `ini_set()` Fonksiyonu
Bazen bir ayarı sadece belirli bir betik çalışırken geçici olarak değiştirmek isteyebilirsiniz. PHP’nin ini_set() fonksiyonu tam olarak bu işe yarar. Örneğin, sadece bir dosya içe aktarma betiği için bellek limitini artırmak isterseniz, betiğin başına ini_set('memory_limit', '512M'); kodunu ekleyebilirsiniz. Bu değişiklik, sadece o betik çalıştığı sürece geçerli olur ve bittiğinde eski değerine döner. Ancak, sunucu yapılandırması tarafından izin verilmeyen (örneğin, disable_functions ile engellenmiş) bazı direktifler ini_set() ile değiştirilemez.
`.htaccess` Dosyası Üzerinden Direktifleri Geçersiz Kılma (Override)
Eğer sunucunuzda Apache çalışıyorsa ve AllowOverride ayarları uygun şekilde yapılandırılmışsa, .htaccess dosyası üzerinden de bazı php.ini direktiflerini geçersiz kılabilirsiniz. Bu, özellikle paylaşımlı hosting ortamlarında php.ini dosyasına doğrudan erişiminiz olmadığında kullanışlıdır. Bunun için .htaccess dosyanıza aşağıdaki gibi satırlar ekleyebilirsiniz:
php_value upload_max_filesize 64Mphp_value post_max_size 64Mphp_flag display_errors Off
php_value, dize veya sayısal değerler için kullanılırken, php_flag, On/Off gibi boolean değerler için kullanılır. Bu yöntem, tüm direktifler için çalışmayabilir ve sunucu yapılandırmasına bağlıdır.
Yaygın Senaryolar ve php.ini ile Çözümleri
Teorik bilgileri pratiğe dökmenin en iyi yolu, sık karşılaşılan sorunları ve bu sorunların php.ini dosyası kullanılarak nasıl çözüldüğünü incelemektir. İşte geliştiricilerin ve site yöneticilerinin sıkça karşılaştığı bazı senaryolar ve çözümleri.
WordPress veya Diğer CMS’lerde “Memory Limit” Hatasını Çözme
Sorun: WordPress sitenizde yeni bir eklenti yüklerken veya karmaşık bir sayfa düzenleyici kullanırken “Fatal error: Allowed memory size of X bytes exhausted…” şeklinde bir hata alıyorsunuz.
Neden: Bu hata, çalışan PHP betiğinin, php.ini dosyasındaki memory_limit ile belirlenen bellek sınırını aştığı anlamına gelir. Özellikle çok sayıda eklenti veya kaynak yoğun temalar bu soruna yol açabilir.
Çözüm: php.ini dosyanızdaki memory_limit direktifinin değerini artırın. Genellikle 128M veya 256M yeterli olacaktır. Örneğin: memory_limit = 256M. Bu değişikliği yaptıktan sonra web sunucusunu yeniden başlatmayı unutmayın. Eğer WordPress hosting kullanıyorsanız, bu ayarı genellikle kontrol panelinizden kolayca yapabilirsiniz.
Büyük Boyutlu Dosyaları Yükleyememe Sorununu Giderme
Sorun: Sitenizin yönetim panelinden yüksek çözünürlüklü bir video veya büyük bir ZIP dosyası yüklemeye çalıştığınızda işlem başarısız oluyor veya bir hata mesajı alıyorsunuz.
Neden: Bu sorun genellikle iki ana direktiften kaynaklanır: upload_max_filesize ve post_max_size. Yüklemeye çalıştığınız dosya, bu direktiflerde tanımlanan limitlerden daha büyüktür.
Çözüm: php.ini dosyasında bu iki değeri de yüklemek istediğiniz dosya boyutundan daha büyük bir değere ayarlayın. Unutmayın, post_max_size değeri her zaman upload_max_filesize değerinden biraz daha büyük olmalıdır. Örneğin, 100MB’lık bir dosya yüklemek için şu ayarları yapabilirsiniz:upload_max_filesize = 100Mpost_max_size = 105M
Betiklerin (Script) Zaman Aşımına Uğramasını Engelleme
Sorun: Bir veritabanı yedeği oluşturma, binlerce ürünü içe aktarma veya büyük bir rapor oluşturma gibi uzun süren bir işlemi başlattığınızda, işlem tamamlanmadan “Maximum execution time of 30 seconds exceeded” hatası alıyorsunuz.
Neden: PHP betiği, php.ini dosyasındaki max_execution_time direktifinde belirtilen süreden daha uzun çalışmaya devam etti ve güvenlik amacıyla sonlandırıldı.
Çözüm: İlgili betiğin ne kadar süreceğini tahmin ederek max_execution_time değerini artırın. Örneğin, işlemin yaklaşık 5 dakika sürebileceğini düşünüyorsanız, bu değeri 300 olarak ayarlayabilirsiniz: max_execution_time = 300.
Geliştirme Ortamında Hataları Gösterme, Canlı Ortamda Gizleme
Sorun: Geliştirme yaparken PHP hatalarını görmek ve ayıklamak istiyorsunuz, ancak aynı ayarlar canlı sitede kaldığında kullanıcılara hata mesajları gösteriliyor ve bu bir güvenlik riski oluşturuyor.
Neden: Geliştirme ve canlı ortamlar için farklı hata raporlama yapılandırmaları gereklidir.
Çözüm: İki farklı php.ini yapılandırması kullanın veya ortamınıza göre ayarları düzenleyin.
| Direktif | Geliştirme (Development) Ortamı | Canlı (Production) Ortamı |
|---|---|---|
| display_errors | On | Off |
| display_startup_errors | On | Off |
| error_reporting | E_ALL | E_ALL & ~E_DEPRECATED & ~E_STRICT |
| log_errors | On | On |
| error_log | /path/to/dev_php_errors.log | /path/to/prod_php_errors.log |
Bu yapılandırma ile geliştirme ortamında tüm hataları ekranda görürken, canlı ortamda hatalar kullanıcıdan gizlenir ve sadece belirtilen log dosyasına kaydedilir. Bu, hem güvenli hem de yönetilebilir bir yaklaşım sunar.
Güvenilir PHP Hosting ve Yönetimi İçin Neden İHS Telekom’u Tercih Etmelisiniz?
PHP tabanlı web sitenizin performansı, güvenliği ve kararlılığı, temelinde yatan hosting altyapısının kalitesiyle doğrudan ilişkilidir. php.ini gibi kritik bir yapılandırma dosyasını yönetme kolaylığı ve sunulan altyapının optimizasyonu, projenizin başarısında kilit rol oynar. İHS Telekom, PHP hosting ihtiyaçlarınız için uzman çözümler sunar.
Optimize Edilmiş ve Güvenli Varsayılan PHP Yapılandırması
İHS Telekom, sunduğu hosting hizmetlerinde, yılların deneyimiyle oluşturulmuş, performans ve güvenlik odaklı varsayılan PHP yapılandırmaları kullanır. expose_php gibi güvenlik açısından riskli ayarlar varsayılan olarak kapalı, session.cookie_httponly gibi önemli güvenlik önlemleri ise aktif durumdadır. Bu sayede, siteniz daha en başından itibaren yaygın tehditlere karşı korunmuş olur.
Kontrol Paneli Üzerinden Kolay php.ini Düzenleme İmkanı
Teknik detaylarla boğuşmak zorunda kalmadan PHP ayarlarınızı yönetmek mi istiyorsunuz? İHS Telekom’un cPanel ve Plesk gibi lider kontrol panelleri üzerinden sunduğu “MultiPHP INI Editor” arayüzü sayesinde, memory_limit, upload_max_filesize gibi en sık ihtiyaç duyulan direktifleri sadece birkaç tıklama ile değiştirebilirsiniz. Karmaşık dosya yolları veya komut satırı bilgisi gerekmez.
Farklı PHP Sürümleri Arasında Geçiş Esnekliği
Web teknolojileri sürekli gelişiyor ve projenizin farklı PHP sürümlerine ihtiyaç duyması oldukça doğal. İHS Telekom, kontrol paneliniz üzerinden siteniz için kullanmak istediğiniz PHP sürümünü (örn: PHP 7.4, 8.0, 8.1, 8.2) kolayca seçmenize olanak tanır. Her sürüm için ayrı ayrı php.ini ayarları yapabilir, böylece eski ve yeni projelerinizi aynı kurumsal hosting hesabı altında sorunsuzca barındırabilirsiniz.
PHP Yapılandırması Konusunda Uzman Teknik Destek
Bir ayarı değiştirirken emin olamadınız mı veya bir PHP hatasıyla mı karşılaştınız? İHS Telekom’un uzman teknik destek ekibi, PHP yapılandırması ve sunucu yönetimi konularında size yardımcı olmaya her zaman hazırdır. Sitenizin ihtiyaçlarına en uygun ayarları belirlemenize ve olası sorunları hızla çözmenize destek olurlar. Güvenilir bir altyapının yanı sıra, arkanızda sağlam bir teknik destek ekibinin olduğunu bilmek, projelerinize odaklanmanızı sağlar ve bir SSL sertifikası kadar güvende hissettirir.
