ServBay'de .user.ini Dosyası Kullanımı: Yerel PHP Yapılandırma Rehberi
ServBay, geliştiriciler için tasarlanmış güçlü ve entegre bir yerel web geliştirme ortamıdır. Birçok dil ve teknoloji yığınını destekler ve esnek PHP sürüm yönetimi ile kolayca yapılandırılabilir. Gerçek projelerde, dosya yükleme boyutu, bellek limiti veya hata raporlama seviyesi gibi PHP ayarlarının her proje için farklı olması gerekebilir. Küresel php.ini dosyasını düzenlemek tüm projeleri etkiler; bu, birden fazla projenin yönetiminde kolaylık sağlamaz.
Neyse ki, PHP, küresel php.ini dosyasına dokunmak zorunda kalmadan, belirli bir dizin ve alt dizinlerde geçerli olacak şekilde özelleştirilebilir PHP ayarları tanımlamanıza olanak sağlayan .user.ini dosyası mekanizmasını sunar. ServBay, .user.ini dosyasını tam anlamıyla destekler; böylece tek bir proje veya dizin için PHP yapılandırmasını hızlı ve verimli bir şekilde özelleştirebilirsiniz.
Bu yazıda, .user.ini dosyasının çalışma prensiplerini, ServBay'de nasıl kullanılacağını ve belirli bir projeye özel PHP ayarlarını nasıl tanımlayacağınızı örneklerle açıklıyoruz.
.user.ini Dosyasına Genel Bakış
.user.ini dosyası, PHP 5.3.0 ile tanıtılmıştır ve daha önce Apache'nin .htaccess dosyasında kullanılan php_value ve php_flag gibi eski yöntemlere göre daha esnek ve güvenli bir yapılandırma sunar. Web'den erişilebilen bir dizine yerleştirilen .user.ini dosyasındaki yapılandırma komutları, yalnızca o dizin ve alt dizinlerindeki PHP betikleri için geçerlidir.
Başlıca Özellikler
- Yerel Kapsam:
.user.inidosyasındaki ayarlar, sadece bulunduğu dizin ve alt dizinlerde geçerlidir; ServBay küreselphp.inidosyasını veya diğer projelerin yapılandırmalarını değiştirmez. - Yüksek Esneklik: Geliştiriciler, her projenin gereksinimlerine göre ayrı PHP yapılandırma kümeleri belirleyebilirler.
- Kolay Yönetim: Küresel sunucu veya PHP yapılandırmasını düzenlemeden proje düzeyinde yapılandırma yapılmasını sağlar ve olası çakışma riskini azaltır.
- Yeniden Başlatma Gerektirmez: Genellikle
php.inidüzenlendiğinde PHP-FPM veya web sunucusunun yeniden başlatılması gerekirken,.user.inideğişiklikleriuser_ini.cache_ttldirektifi ile belirlenen zaman aralığında (varsayılan olarak 300 saniye, yani 5 dakika) kendiliğinden etkinleşir.
Yapılandırılabilir Direktifler
Tüm PHP ayarları .user.ini dosyasında değiştirilemez. Bir direktifin hangi düzeyde değiştirilebileceği “Değiştirilebilir Modlar” (Changeable Modes) ile tanımlanır. Sadece PHP_INI_USER, PHP_INI_PERDIR veya PHP_INI_ALL modlarında olan ayarlar .user.ini ile düzenlenebilir.
Sıkça .user.ini dosyasında yapılandırılan bazı ayarlar şunlardır:
upload_max_filesizepost_max_sizememory_limitdisplay_errorslog_errorsmax_execution_timesession.save_pathdate.timezone
Modu PHP_INI_SYSTEM olan ayarlar (ör. extension_dir, zend_extension, disable_functions gibi) .user.ini dosyasında değiştirilemez; yalnızca ana php.ini dosyasından ya da sunucu yapılandırmasından yönetilebilir.
Her bir direktifin değiştirilebilirliğini görmek için PHP'nin php.ini direktifleri dokümantasyonuna bakabilirsiniz.
ServBay'de .user.ini Nasıl Kullanılır?
ServBay'de .user.ini dosyası kullanımı oldukça basittir. Aşağıda, upload_max_filesize ve memory_limit ayarlarını yapılandırmayı örneklendiriyoruz.
Diyelim ki web sitenizin kök dizini ServBay’in varsayılan yolu olan /Applications/ServBay/www/ dizininde ve myproject adlı bir projeniz var. Projenizin web kökü /Applications/ServBay/www/myproject/public dizindedir.
Adım 1: Hedef Dizini Belirleyin
Öncelikle, özelleştirilmiş PHP ayarlarının etkin olmasını istediğiniz dizini belirleyin. Çoğunlukla bu dizin, projenizin web sunucusuna açılan kök dizini (ör. Laravel veya Symfony projelerinde public dizini) olacaktır; veya ihtiyaç duyan başka bir alt dizin de olabilir.
Örneğin: /Applications/ServBay/www/myproject/public
Adım 2: .user.ini Dosyasını Oluşturun veya Düzenleyin
Belirlediğiniz dizinde .user.ini adlı yeni bir dosya oluşturun (eğer zaten varsa düzenleyin). Unutmayın, başında nokta olan .user.ini gibi dosyalar çoğu dosya sisteminde gizli dosyadır; dosya yöneticinizde gizli dosyaları görünecek şekilde ayarlamanız gerekebilir.
Terminal kullanarak dosyayı oluşturabilirsiniz:
bash
cd /Applications/ServBay/www/myproject/public
touch .user.ini1
2
2
Daha sonra bir metin editörü ile .user.ini dosyasını açın ve her satıra bir PHP yapılandırma direktifi ekleyin. Örneğin:
ini
; Maksimum dosya yükleme boyutunu 20MB olarak ayarla
upload_max_filesize = 20M
; PHP betikleri için bellek sınırını 256MB olarak ayarla
memory_limit = 256M
; Hata gösterimini aç (sadece geliştirme ortamında önerilir)
display_errors = On1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
.user.ini dosyasını kaydedin ve kapatın.
Adım 3: Ayarların Etkinleşmesini Bekleyin veya Zorunlu Yenileyin
.user.ini dosyasında yapılan değişiklikler anında uygulanmaz; PHP, performans için bu dosyaları önbelleğe alır. Ayarların güncellenme sıklığı user_ini.cache_ttl direktifiyle kontrol edilir, genellikle varsayılan olarak 300 saniyedir (5 dakika). Değişiklikler, önbellek süresi sonunda otomatik olarak etkinleşecektir.
Değişikliklerin hemen etkin olmasını istiyorsanız, aşağıdaki yöntemleri deneyebilirsiniz (başarı, ServBay’in sürümüne ve yapılandırmasına bağlıdır):
- İlgili PHP-FPM sürecini yeniden başlatın: ServBay uygulamasında, sitenizin kullandığı PHP sürümünü bulun ve bu sürümün PHP-FPM hizmetini durdurup yeniden başlatmayı deneyin.
- ServBay'i yeniden başlatın: En kesin yöntemdir, fakat yerel tüm servislerinizi geçici olarak durduracaktır.
- Önbelleğin süresinin dolmasını bekleyin: Acil değilse, önerilen yöntem budur.
Adım 4: .user.ini Ayarlarını Doğrulayın
.user.ini dosyanızın gerçekten etkin olup olmadığını doğrulamak için PHP yapılandırma bilgilerini görüntüleyen basit bir PHP dosyası oluşturabilirsiniz.
.user.ini dosyasını koyduğunuz dizinde (ör. /Applications/ServBay/www/myproject/public) info.php adlı bir dosya oluşturun ve içeriğini aşağıdaki gibi yazın:
php
<?php
phpinfo();
?>1
2
3
2
3
info.php dosyasını kaydedin.
Daha sonra tarayıcınızda, ServBay üzerindeki ilgili alan adıyla info.php dosyasını ziyaret edin. Örneğin projeniz myproject.servbay.demo alan adı altında ve info.php ise public dizininde ise, adres aşağıdaki gibi olabilir: https://myproject.servbay.demo/info.php.
Açılan phpinfo() sayfasında .user.ini dosyasında ayarladığınız direktifleri (ör. upload_max_filesize, memory_limit, display_errors) arayın. Genellikle bu ayarlar için iki sütun görürsünüz: Master Value ve Local Value.
Master Value, küreselphp.inidosyanızdaki değeri gösterir.Local Value, ilgili betik için geçerli olan değeri gösterir; bu değer.user.iniveya web sunucu yapılandırmasından alınmış olabilir.
Eğer Local Value kısmında .user.ini dosyanızda ayarladığınız değeri görüyorsanız (örn. 20M, 256M, On), yapılandırmanız başarılı şekilde uygulanmış demektir.
Önemli Uyarı: Yapılandırmayı doğruladıktan sonra, info.php dosyasını silin veya erişimini sınırlayın; zira bu dosya, sunucu yapılandırmanızın ayrıntılarını herkese gösterir.
Ek Açıklamalar ve Dikkat Edilecekler
- Dosya Adı ve Konumu:
.user.inidosyanızın adının kesinlikle.user.iniolması ve ayarların geçerli olmasını istediğiniz dizinde yer alması gerekir. Bu dizindeki ve alt dizinlerdeki tüm PHP betiklerini etkiler. - Direktif Modları: Yineleyerek belirtelim, sadece belirli modlardaki direktiflerin
.user.iniile değiştirilebileceğini unutmayın.PHP_INI_SYSTEMmodundaki direktifler.user.iniile etkinleştirilemez ve hatasız şekilde göz ardı edilir. Ayrıntılı bilgi için PHP dokümantasyonuna başvurun. - Önbellek:
user_ini.cache_ttlayarına dikkat edin..user.inidosyasını sık sık değiştirecek ve etkilerini hemen görmek isteyecekseniz, geçici olarak küreselphp.inidosyasındakiuser_ini.cache_ttldeğerini küçültebilirsiniz (örn.user_ini.cache_ttl = 5). Ancak üretim ortamında performans nedeniyle düşük bir değer önerilmez. Bu tür değişikliklerden sonra PHP-FPM servisinin yeniden başlatılması gerekir. - Öncelik: PHP yapılandırma öncelik sırası genellikle şöyledir: çekirdek varsayılanı <
php.ini(ya da ek .ini dosyaları) < web sunucu yapılandırması (php_value/php_flag), eğer Apache/nginx modülüyle kullanılıyorsa <.user.ini<ini_set()fonksiyonu..user.iniile yapılan ayarlar, küreselphp.inideğerlerinin üstüne yazar, ancak bir betiktekiini_set()fonksiyonuyla kolayca geçersiz kılınabilir. - Güvenlik:
.user.inidosyasında hassas bilgiler saklamaktan kaçının. Yalnızca geçerli dizin ve alt dizinlerini etkileseler de bu dosyalar web üzerinden erişilebilen konumda olduğundan (genellikle erişimi kısıtlanır), yine de güvenlik önlemleri alınmalıdır.
Sıkça Sorulan Sorular (SSS)
S: .user.ini dosyasını oluşturdum ve ayar ekledim, ancak etkin olmuyor, neden?
C: Muhtemel nedenler:
- Dosya adı ya da konumu hatalı: Dosyanızın adı kesinlikle
.user.iniolmalı ve doğru dizinde yer almalı. - Desteklenmeyen direktif modu:
.user.inidosyasında ayarlanamayacak bir direktifi (moduPHP_INI_USERveyaPHP_INI_PERDIRolmayan) değiştirmeye çalışıyor olabilirsiniz. PHP dokümantasyonunu kontrol edin. - Önbellek süresi geçmedi: Ayarların etkinleşmesi için
user_ini.cache_ttldeğerince (varsayılan 5 dakika) beklemelisiniz ya da PHP-FPM hizmetini yeniden başlatmalısınız. - Sözdizimi hatası:
.user.inidosyasındaki yazım hatalarını kontrol edin. - Daha yüksek öncelikli ayar tarafından geçersiz kılınma: Kodunuzda
ini_set()fonksiyonu ile yapılan bir ayar üzerine yazmış olabilir.
S: .user.ini ve küresel php.ini arasındaki fark nedir?
C: Küresel php.ini dosyası, PHP'nin (veya belirli bir PHP sürümünün) tüm uygulamalarında geçerli olur; yani, tüm PHP betiklerinde ayarlar geçerlidir (daha alt düzeyde başka bir ayarla geçersiz kılınmadıkça). .user.ini ise yalnızca bulunduğu dizin ve alt dizinlerdeki PHP betiklerinde ve sadece belirli moddaki ayarlarda geçerlidir. .user.ini'nin başlıca avantajı, küresel ayarları değiştirmek zorunda kalmadan yerel olarak özelleştirme imkanı sunmasıdır.
Sonuç
ServBay ortamında .user.ini dosyasını kullanmak, proje tabanlı PHP ayarlarını yönetmek için en iyi yaklaşımdır. Büyük esneklik sunar; böylece başka projelere veya küresel ServBay yapılandırmasına zarar vermeden, her projenizin gereksinimlerine uygun PHP ortamı oluşturabilirsiniz. Bu rehber ve örnekler sayesinde, kendi ServBay projelerinizde .user.ini dosyasını etkili biçimde kullanabilir, geliştirme ortamınızı hızlı ve kolay biçimde özelleştirebilirsiniz. ServBay'in geliştirme felsefesi, geliştiricilere güçlü ve esnek yerel geliştirme araçları sunmaktır; .user.ini desteği de bu yaklaşımın önemli bir parçasını oluşturur.
