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.ini
dosyasındaki ayarlar, sadece bulunduğu dizin ve alt dizinlerde geçerlidir; ServBay küreselphp.ini
dosyası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.ini
düzenlendiğinde PHP-FPM veya web sunucusunun yeniden başlatılması gerekirken,.user.ini
değişiklikleriuser_ini.cache_ttl
direktifi 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_filesize
post_max_size
memory_limit
display_errors
log_errors
max_execution_time
session.save_path
date.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:
cd /Applications/ServBay/www/myproject/public
touch .user.ini
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:
; 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 = On
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
phpinfo();
?>
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.ini
dosyanızdaki değeri gösterir.Local Value
, ilgili betik için geçerli olan değeri gösterir; bu değer.user.ini
veya 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.ini
dosyanızın adının kesinlikle.user.ini
olması 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.ini
ile değiştirilebileceğini unutmayın.PHP_INI_SYSTEM
modundaki direktifler.user.ini
ile 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_ttl
ayarına dikkat edin..user.ini
dosyasını sık sık değiştirecek ve etkilerini hemen görmek isteyecekseniz, geçici olarak küreselphp.ini
dosyasındakiuser_ini.cache_ttl
değ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.ini
ile yapılan ayarlar, küreselphp.ini
değerlerinin üstüne yazar, ancak bir betiktekiini_set()
fonksiyonuyla kolayca geçersiz kılınabilir. - Güvenlik:
.user.ini
dosyası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.ini
olmalı ve doğru dizinde yer almalı. - Desteklenmeyen direktif modu:
.user.ini
dosyasında ayarlanamayacak bir direktifi (moduPHP_INI_USER
veyaPHP_INI_PERDIR
olmayan) 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_ttl
değerince (varsayılan 5 dakika) beklemelisiniz ya da PHP-FPM hizmetini yeniden başlatmalısınız. - Sözdizimi hatası:
.user.ini
dosyası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.