PHP'de hata gösterimini sadece htaccess aracılığıyla etkinleştirme


113

Bir web sitesini çevrimiçi olarak test ediyorum.

Şu anda hatalar görüntülenmiyor (ama var olduklarını biliyorum).

Sadece .htaccessdosyaya erişimim var .

Dosyamı kullanarak tüm hataları nasıl görüntüleyebilirim .htaccess?


Bu satırları dosyama ekledim .htaccess:

php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on

Ve sayfalar şimdi şunu gösteriyor:

İç Sunucu Hatası


biraz googling yaptım, htaccess'ime bazı işaretler ekledim; ve sayfalarım tekrar görüntülenemiyor
Ogugua Belonwu

3
Bu ayarları htaccess'ten geçersiz kılma hakkınız yok gibi görünüyor. AllowOverride AllErişiminiz varsa Apache yapılandırmasında ayarlamanız gerekebilir .
kapa

Apache hata günlüğünüzü kontrol edin. Neden 500 dahili hatayı aldığınızın kesin nedeni olacaktır. Tarayıcıda gördükleriniz, tasarım gereği teşhis amacıyla yararsızdır.
Marc B

Yanıtlar:


190

.htaccess:

php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on
php_flag  log_errors on
php_value error_log  /home/path/public_html/domain/PHP_errors.log

14
bu satırları htaccess'ime ekledim: php_flag display_startup_errors php_flag üzerinde display_errors html_errors üzerinde ve sayfalar dahili sunucu hatası gösteriyor
Ogugua Belonwu,

4
PHP'yi bir Apache modülü olarak kullanırken, yapılandırma ayarlarını Apache yapılandırma dosyalarındaki (örn. Httpd.conf) ve .htaccess dosyalarındaki yönergeleri kullanarak da değiştirebilirsiniz. Bunu yapmak için "AllowOverride Options" veya "AllowOverride All" ayrıcalıklarına ihtiyacınız olacaktır. php.net/manual/en/configuration.changes.php
çakmaktaşı

PHP_errors.log'u oluşturun ve apache tarafından oluşturulan ve doldurulan dosyayı muhtemelen görmeyeceğiniz başka bir şekilde 777 yapın ... en azından ben onu oluşturmalıydım.
PJunior

2
ogugua gibi ben de artık bu satırları kullanarak dahili sunucu hatası alıyorum.
indi

1
Bir 500 alırsanız, bunun nedeni muhtemelen mod_php değil php-fpm kullanıyor olmanızdır.
mpchadwick

41
php_flag display_errors on

Hataların gerçek görüntüsünü açmak için.

Görüntülediğiniz hata türlerini ayarlamak için şunları kullanmanız gerekir:

php_value error_reporting <integer>

Bu sayfadaki tamsayı değerleriyle birleştirilmiştir: http://php.net/manual/en/errorfunc.constants.php

Tamsayınız için -1 kullanırsanız, tüm hataları göstereceğini ve yeni hata türleri eklediklerinde ileride kanıtlanacağını unutmayın.


17

Mevcut yanıta daha fazla ayrıntı eklemek istiyorum:

# PHP error handling for development servers
php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on
php_flag log_errors on
php_flag ignore_repeated_errors off
php_flag ignore_repeated_source off
php_flag report_memleaks on
php_flag track_errors on
php_value docref_root 0
php_value docref_ext 0
php_value error_log /full/path/to/file/php_errors.log
php_value error_reporting -1
php_value log_errors_max_len 0

Günlük dosyasına 777 veya 755 izni verin ve ardından kodu ekleyin

<Files php_errors.log>
     Order allow,deny
     Deny from all
     Satisfy All
</Files>

.htaccess'in sonunda. Bu, günlük dosyanızı koruyacaktır.

Bu seçenekler bir geliştirme sunucusu için uygundur. Bir üretim sunucusu için son kullanıcıya herhangi bir hata göstermemelisiniz. Bu yüzden ekran bayraklarını kapalı olarak değiştirin .

Daha fazla bilgi için şu bağlantıyı izleyin: htaccess aracılığıyla Gelişmiş PHP Hata İşleme


1
hata günlüğü dosyasına chmod "0644" vermeye ne dersiniz? hala çalışıyor muydu?
Andre Chenier

2

Yalnızca önemli çalışma zamanı hatalarını görmek istiyorsanız:

php_value display_errors on
php_value error_reporting 4

2

Bu benim için çalışıyor ( referans ):

# PHP error handling for production servers
# Disable display of startup errors
php_flag display_startup_errors off

# Disable display of all other errors
php_flag display_errors off

# Disable HTML markup of errors
php_flag html_errors off

# Enable logging of errors
php_flag log_errors on

# Disable ignoring of repeat errors
php_flag ignore_repeated_errors off

# Disable ignoring of unique source errors
php_flag ignore_repeated_source off

# Enable logging of PHP memory leaks
php_flag report_memleaks on

# Preserve most recent error via php_errormsg
php_flag track_errors on

# Disable formatting of error reference links
php_value docref_root 0

# Disable formatting of error reference links
php_value docref_ext 0

# Specify path to PHP error log
php_value error_log /home/path/public_html/domain/PHP_errors.log

# Specify recording of all PHP errors
# [see footnote 3] # php_value error_reporting 999999999
php_value error_reporting -1

# Disable max error string length
php_value log_errors_max_len 0

# Protect error log by preventing public access
<Files PHP_errors.log>
 Order allow,deny
 Deny from all
 Satisfy All
</Files>
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.