仅通过htaccess在PHP中启用错误显示


113

我正在在线测试一个网站。

目前,错误尚未显示(但我知道它们存在)。

我只能访问该.htaccess文件。

如何使用.htaccess文件显示所有错误?


我将以下行添加到我的.htaccess文件中:

php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on

现在页面显示:

内部服务器错误


我已经进行了一些谷歌搜索,并为我的htaccess添加了一些标志;并且我的页面无法再次显示
Ogugua Belonwu

3
似乎您无权从htaccess覆盖这些设置。AllowOverride All如果可以访问,则可能需要在Apache配置中进行设置。
卡帕

检查您的apache错误日志。您必须得到确切的原因才能得到500内部错误。在浏览器中看到的内容设计用于诊断目的是无用的。
Marc B

Answers:


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
我将这些行添加到htaccess中:php_flag display_startup_errors上php_flag display_errors上php_flag html_errors上,页面显示内部服务器错误
Ogugua Belonwu

4
当将PHP用作Apache模块时,还可以使用Apache配置文件(例如httpd.conf)和.htaccess文件中的指令来更改配置设置。您将需要“ AllowOverride选项”或“ AllowOverride全部”特权。php.net/manual/en/configuration.changes.php
silex

创建PHP_errors.log并将其设置为777,否则您可能看不到apache创建并填充的文件……至少我必须创建它。
2014年

2
像ogugua一样,通过使用这些行,我现在也出现内部服务器错误。
着陆

1
如果您得到500,则可能是因为您使用的是php-fpm,而不是mod_php。
mpchadwick,

41
php_flag display_errors on

打开错误的实际显示。

要设置显示的错误类型,您将需要使用:

php_value error_reporting <integer>

结合以下页面中的整数值:http : //php.net/manual/zh/errorfunc.constants.php

请注意,如果您对整数使用-1,它将显示所有错误,并在它们添加新类型的错误时为将来提供证明。


17

我想在现有答案中添加更多详细信息:

# 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

授予777或755权限到日志文件,然后添加代码

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

在.htaccess的末尾。这将保护您的日志文件。

这些选项适用于开发服务器。对于生产服务器,您不应向最终用户显示任何错误。因此,将显示标志更改为off

有关更多信息,请单击以下链接:通过htaccess的高级PHP错误处理


1
将chmod“ 0644”赋予错误日志文件怎么办?它会继续工作吗?
安德烈·谢尼尔

2

如果只想看到致命的运行时错误:

php_value display_errors on
php_value error_reporting 4

2

这对我有用(参考):

# 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>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.