Php.ini, wp-config ve .htaccess söz konusu olduğunda Wordpress hangisine öncelik verir?


10

Diyelim ki bir Wordpress web sitesi için maksimum yükleme sınırını değiştirmek istiyorum ve aşağıdaki değerleri veriyorum:

wp-config.php: 128MB php.ini: 256MB .htaccess: 64MB

Peki, Wordpress ihtiyaç üzerine işlerken hangisine öncelik verecekti?

Yanıtlar:


14

Size bu dosyaların her birinde değişiyor ne sorudan açık değil, ama her durumda öyle de tahmin PHP ayarı .upload_max_filesize

Genel olarak, ayarlar her biri bir önceki değeri aşan bu sırayla uygulanır:

  1. php.ini
  2. .Htaccess'teki Apache yönergeleri
  3. çağrıları ini_set()

Ancak, bu ayar tanımlandığı PHP_INI_PERDIR, hangi olarak bu sayfayı açıklanmıştır o kullanılarak ayarlanamaz araçlarla ini_setyüzden, wp-config.phponu değiştiremez. Yani soruya verdiğiniz örnekte, değeri 64MB .htaccess'ten alacaktır.

echo ini_get('upload_max_filesize');Kodunuzda bir yerde çalışarak bunu doğrulayabilirsiniz .

Kullanıcı başına php.ini dosyaları ve diğer Apache yapılandırma bağlamları gibi yukarıda listelemediğim başka yer değerlerinin ayarlanabileceğini unutmayın . Ayrıca, bunlardan bazıları devre dışı bırakılabilir , bu nedenle sunucunuz .htaccess'te fazla gezintiye izin verecek şekilde ayarlanmamışsa, orada da bir değer ayarlayamazsınız.

Wordpress'in, PHP yapılandırmasıyla farklı şekillerde etkileşen kendi yapılandırma değişkenlerinden bazılarını içerdiğini de unutmayın. Örneğin, WP_MEMORY_LIMITdener yükseltmek PHP memory_limitbaşlangıçta ayarı, ancak sahip olduğu kontroller kodu ve bunu düşürür asla . Bunun genel bir kuralı yoktur, farklı ayarlar için farklı olacaktır.


php.ini her zaman ilk seçenektir.
WpMania.Net

5

Temel olarak her üç dosya da dikkate alınır.

WordPress / sunucunuz aşağıdaki sırayla kontrol eder:

wp-config.php > .htaccess > php.ini

"Daha yüksek bir seviyedeki" bir şey (daha sonra zincirde) değerinizi sınırlıyorsa, önceki değer yok sayılır veya üzerine yazılır. Zincirin bir parçası eksikse, .htaccessörneğin, bir sonraki yüksek olan değer kullanılacaktır.

Örnekte .htaccesssınırlayacak max_upload_sizesunucu aynı zamanda ilk dosya boyutu 128 MB'a kadar kabul edeceğini en fazla 256 MB ve WordPress ile para cezası olacağını rağmen, 64 MB.

Ayrıca dosya üzerinden farklı bir sınır belirleyebilir.htaccess ve bunu yaparak değerin üzerine yazabilirsiniz php.ini, böylece artık hakim değer olmaz. Bu, birçok barındırma ortamında çalışır, bu nedenle bu şekilde yükseltebilir veya düşürebilirsiniz max_upload_size.

Daha sıkı yapılandırılmış bir barındırma / sunucunuz varsa, ayarları geçersiz kılma seçeneğinin php.inidevre dışı bırakılması mümkündür. Bu durumda, geçersiz kılma max_upload_sizegelen .htaccessYapmayacağım çalışması, bu nedenle bu sınırlayıcı bir faktör olabilir.


8
Soruların istediği gibi bir öncelikler listesi verdiğinizde bu "nasıl çalışır?" Ve eğer .htaccesslistenin ortasındaysa, bu neden sınırlayıcı faktör olsun ki?
IMSoP

Sanırım ifadem belirsizdi. Sorusunu "wp-config'te daha yüksek bir değer belirlersem, bu diğerlerine 'hükmedecek mi?" ve bu böyle çalışmaz. ;-) @bns bu konuda daha iyi bir açıklama yaptı.
flomei

Tamam, şimdi ne demek istediğini anlıyorum. Ancak, bns'ın cevabı altında yorum yaptığım gibi, daha yüksek bir değerle geçersiz kılamayacağınız iddiasını destekleyen hiçbir belge bulamıyorum. Cevabımda açıklandığı gibi wp-config.php değeri her zaman yok sayılır, ancak eminim .htaccess içinde daha yüksek bir değer php.ini içinde daha düşük bir değeri geçersiz kılacaktır.
IMSoP

Kısmen haklısınız, ancak .htaccess'ten php.ini değerlerini geçersiz kılmak devre dışı bırakılabilir, güncellenmiş cevabımı görün.
flomei

Güncellemeniz yine de yalnızca .htaccess ile daha düşük bir değer ayarlayabileceğiniz anlamına geliyor . Orada daha yüksek bir değer belirleyememeniz için hiçbir neden bilmiyorum . Mekanizmanın devre dışı bırakılabilmesi iyi bir noktadır ve cevabımda göze çarpan bir şeydir, ancak .htaccess'te herhangi bir PHP ayarına izin verildiğini varsayarsak , .htaccess içindeki bir değer php.ini'deki bir değere kesinlikle "hükmeder" aynı ayar için.
IMSoP

3

Bence flomei cevabı düzenlemeli, çünkü bu doğru cevap ama kötü açıklama. Php.ini -> .htaccess -> wp-config.phpaslında her dosyanın okunacağı sıradır ve daha önce tanımlanmış bir ayar olmadığını dikkate alarak değerleri ayarlar. Ancak daha önce tanımlanmış bir ayar olması durumunda, bu, yalnızca yeni ayar daha düşükse "fazla basılacaktır".

Bu, 64Mb ile wp-config.php ve 32 MB ile .htaccess varsa: wp-config.php, daha düşük bir sınır olduğundan ve 32Mb ile sonuçlanacağınız için bu ayarı geçersiz kılmaz.

Ancak 32Mb ile wp-config.php ve 64 MB ile .htaccess varsa, wp-config.php önceki ayarı 32Mb'ye düşürür.

Düzenleme: IMSoP'nin işaret ettiği gibi, wp-config.php sadece 'WP_MEMORY_LIMIT' değiştiriyorsanız PHP ayarlarının izin verdiğinden daha kısıtlayıcı bir boyut ayarlamanıza izin verir, bunun ötesine geçmenize izin vermez. Yani aslında bir ayar geçersiz kılma değil. Aslında, çalışma zamanında farklı noktalarda yapılan ayrı kontroller vardır. Php ayarını upload_max_filesizevarsaydığı gibi değiştiriyorsanız (soru hangi ayarları değiştirdiğinizi göstermez), bunun bir etkisi yoktur.

Ayrıca, php ayarlarınızda post_max_sizeolduğundan daha büyük olması gerektiğini dikkate almanız gerekecektir.upload_max_filesize


2
Kesinlikle gördüğüm herhangi bir PHP ayarı için doğru değil, çünkü bu "sadece yeni değer düşükse over-riding" için herhangi bir belge bağlayabilirsiniz. Bu kılavuz sayfasında da belirtilmemiştir . Ne olduğunu söz benim cevap işaret olarak, yani upload_max_filesizeböylece (Bir etkisi olması için çok geç muhtemelen çünkü) zamanında değiştirilemez wp-config.phpbunu öyle ya da böyle etkileyemez. Dahili 2MB varsayılandan da bahsedilir ve kesinlikle bundan daha yüksek bir değere ayarlayabilirsiniz.
IMSoP

Temelde, aynı sorun yaşadığımda barındırma sağlayıcım destek ekibinin bana açıkladığı şey, bulursam e-postayı arayacağım ve güncelleyeceğim. Sunucunun içinde gerçekten değeri geçersiz kıldığınızdan gerçekten emin değilim, ya da sadece doğrulamaların farklı yerlerde yürütme zamanında yapıldığından, davranış bu şekilde.
bns

1
Sadece reiterate için şunları yapmanız ekliyorsanız çizgi halinde wp-config.phpolduğunu ini_set('upload_max_filesize', '32M');o olacak hiç bir etkisi söz konusu ayar, çünkü çalışma anında ayarlanamaz olarak o olarak tanımlanırPHP_INI_PERDIR . (Belgeler sayfası yanlış
değilse

Hayır, haklısın. Gerçekten bir ayar geçersiz kılma değil. Onun sadece başka bir ayrı kısıtlama, karışıklığı önlemek için acordingly güncelleyecektir.
bns

1
@IMSoP / bns - Bence belki belirli wp-config.phpdeğerler ve keyfi PHP değerleri ayarlama arasında biraz karışıklık var ini_set(). Anladığım kadarıyla wp-config.php, öncelikle WordPress'e özgü yapılandırma değerlerinin ayarlanmasıyla ilgilidir ve bunların çoğu , temelde PHP yapılandırma ayarıyla ( yanıtta belirtildiği gibi) gerçekten sınırlıdır (yani, üst limit uygulanır WP_MEMORY_LIMIT). Bu bir WordPress olayı. Ancak, PHP kullanarak rasgele PHP yapılandırma değerleri ayarlanırken ini_set()böyle bir kısıtlama yoktur.
MrWhite
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.