Ayrıştırma hataları görüntülenmez

6 Cevap php

Ben PHP ekranda ayrıştırma hataları göstermek istiyorum. Ne var onun yerine almak boş bir sayfa olduğunu. Hiçbir sunucunun hata günlük dosyasına yazılır alır.

Benim kurulum: PHP5.2.9 / IIS 6 (Apache değil!).

Benim PHP.INI:

error_reporting=E_STRICT
display_errors = On
display_startup_errors = On
log_errors = On
error_log = "C:\Program Files\Zend\ZendServer\logs\php_error.log"

Nasıl ayrıştırma veya ölümcül hataları günlüğe veya ekranda gösterilen ya da olmak alabilirim?

Thanks, Temuri

UPDATE: farklı anahtarlar ile oynadıktan sonra bir IIS özgü bir sorun olarak görünüyor. HERHANGİ FİKİRLER MİLLET?

6 Cevap

Dosyanın kendisi çözümlenen olamaz çünkü php dosyasının kendisinde hata düzeyini ayarlayarak burada sorunu çözmek değil!

Aşağıdaki gibi php.ini error_reporting satırı değiştirmeniz gerekir:

error_reporting = E_ALL

BTW: hata iletileri hangi türünü görüntülemek için yapmanız gerekenler hakkında php.ini dosyasında bazı örnekler vardır.

İyi şanslar,

mcemoz

Apache daima ya ayrıştırma hataları bildirmek için sevmez. Komut satırından çalıştırmak

php -l <file>

-L anahtarı dosyası sözdizimi kontrol etmek PHP söyler. Man sayfasına bakın.

E_STRICT E_ALL (PHP 6 kadar) dahil değildir. Eğer elde tutmak istiyorsanız E_STRICT

Php.ini 'de:

error_reporting = E_ALL | E_STRICT

Çalışma zamanında:

error_reporting( E_ALL | E_STRICT );

Sen hata raporlama seviyesini ayarlamak gerekir (ve display_errors) php.ini sözdizimi hataları görmek için. PHP sözdizimi hatasıyla karşılaşırsa, zamanı idam almaz, bu yüzden zamanında ayarı çalışmaz. (display_errors bağlantıya bakınız.)

Rasmus Lerdorf anlaşılacağı gibi, her zaman geliştirme sunucuda error_reporting (-1) kullanın.

Bu deneyin.

error_reporting(E_ALL);
ini_set("display_errors", 1);

Siz terminalde bu komut ile komut sözdizimi doğrulayabilirsiniz:

php -l path/to/file.php

: Şahsen, benim ~/.bash_profile bu yüzden kolayca çalıştırabilirsiniz dosya php -l geçerli çalışma dizinindeki tüm dosyaları bu satırı eklendi

phpl() { for i in *.php; do php -l $i; done }

Eğer gerçekten hardcore iseniz, hatta komut satırından uygulamayı çalıştırabilirsiniz. Sen derleme zamanı hataları görerek çok daha iyi bir şans olacak, ve bu sadece biraz serin.

Sen ilk argüman almak için $ argv değişkeni kullanabilirsiniz, $ argv [1], daha sonra kullanmak isteği gibi.

<?php
// show those errors!
error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', 1);

// simulate a web server request
$request = '/' . isset($argv[1]) ? ltrim($argv[1], '/') : '/';
$_SERVER['PATH_INFO'] = $_SERVER['REQUEST_URI'] = $request;

Then you can run your script via command line. This would be the equivalent of visiting: your-webapp.com/request/uri/here

php /path/to/script.php request/uri/here

Burada komut satırı üzerinden CodeIgniter'ı çalışan için daha kapsamlı bir örnektir. Bu pek çok diğer çerçeveler için çalışması gerekir: http://phpstarter.net/2008/12/run-codeigniter-from-the-command-line-ssh/