Bu, yüklü ve çalışma zamanı yapılandırması sorunudur
Derleme veya ayrıştırma adımı sırasında bir sözdizimi hatası veya ayrıştırma hatası oluştuğunu bilmek önemlidir, bu da PHP'nin kodunuzu yürütme şansı bile olmadan önce kefaletle alacağı anlamına gelir. Bu nedenle display_errors
, çalışma zamanı sırasında PHP'nin yapılandırmasını değiştiriyorsanız (bu, ini_set
kodunuzda kullanmaktan bir çalışma zamanı yapılandırma dosyası olan .htaccess'i kullanmaya kadar her şeyi içerir ), yalnızca varsayılan yüklü yapılandırma ayarları yürürlüktedir.
WSOD'un geliştirilmesinde her zaman nasıl önlenir
Eğer emin olun istediğiniz bir WSOD önlemek için yüklenen yapılandırma dosyası vardır display_errors
ve error_reporting
hiç seti -1
( tüm bitleri bakılmaksızın PHP hangi versiyonunun açık olduğundan sağlar, çünkü bu sen koşu eşdeğer E_ALL olduğunu ). E_ALL sabit değerini kodlamayın, çünkü bu değer PHP'nin farklı sürümleri arasında değişebilir.
Yüklü yapılandırma Yüklü ya olan php.ini
dosya veya apache.conf
veya httpd.conf
veya sanal ana dosyası. Bu dosyalar, başlangıç aşamasında yalnızca bir kez okunur (örneğin, apache httpd veya php-fpm'yi ilk başlattığınızda) ve yalnızca çalışma zamanı yapılandırma değişiklikleri tarafından geçersiz kılınır. Emin olmak olduğunu display_errors = 1
ve error_reporting = -1
bir bakın asla Yüklü yapılandırma dosyası teminat altın WSOD bakılmaksızın böyle bir çalışma zamanı değişiminden önce meydana sözdizimi veya ayrıştırma hatası ini_set('display_errors', 1);
veya error_reporting(E_ALL);
gerçekleşebilir.
(Php.ini) yüklü yapılandırma dosyalarınızı bulma
Yüklü yapılandırma dosyalarınızı bulmak için sadece aşağıdaki kodla yeni bir PHP dosyası oluşturun ...
<?php
phpinfo();
Ardından tarayıcınızı oraya yönlendirin ve genellikle üstünüzde bulunan ve yüklenen tüm yapılandırma dosyalarınızın mutlak yolunu içeren Yüklü Yapılandırma Dosyası ve ayrıştırılan Ek .iniphpinfo()
dosyalarına bakın.
(none)
Dosya yerine görüyorsanız , Yapılandırma Dosyası (php.ini) Yolunda bir php.ini dosyanız olmadığı anlamına gelir . Böylece PHP ile birlikte gelen stok php.ini'yi buradan indirebilir ve bunu yapılandırma dosyası yolunuza php.ini olarak kopyalayabilir ve ardından php kullanıcınızın o dosyadan okumak için yeterli izinlere sahip olduğundan emin olabilirsiniz. Yüklemek için httpd veya php-fpm'yi yeniden başlatmanız gerekir. Unutmayın, bu PHP kaynağı ile birlikte gelen geliştirme php.ini dosyasıdır. Bu yüzden lütfen üretimde kullanmayın!
Sadece bunu üretimde yapma
Bu, bir WSOD'nin geliştirilmesinden kaçınmanın en iyi yoludur. PHP betiğinizin üstüne koymanızı ini_set('display_errors', 1);
ya error_reporting(E_ALL);
da üstüne koymanızı ya da burada yaptığınız gibi .htaccess'i kullanmanızı öneren herkes , yüklenen yapılandırma dosyanız varsa bir sözdizimi veya ayrıştırma hatası oluştuğunda (burada da olduğu gibi) bir WSOD'den kaçınmanıza yardımcı olmayacaktır. gelmiştir display_errors
kapattı.
Birçok kişi (ve PHP'nin stok kurulumları), display_errors
varsayılan olarak kapalı olan bir üretim ini dosyası kullanır ve bu da genellikle burada yaşadığınız aynı hayal kırıklığına neden olur. PHP başladığında zaten kapalı olduğundan, bir sözdizimi veya ayrıştırma hatasıyla karşılaşır ve çıktısı olmayan bir şey kefaletle karşılanır. Sen senin bekliyoruz ini_set('display_errors',1);
PHP komut dosyası üstündeki o kaçınılması gerekirdi, ama o çalışma zamanını ulaşmış asla çünkü PHP kodunuzu ayrıştırmak olamaz eğer mesele olmaz.