有没有说方式普遍告诉PHP重定向到任何致命错误的某个页面?捕捉所有的错误,并重定向到页面用PHP
说我有一个网站有很多不同的文件,我想隐藏问题(同时仍然记录它们)并将用户发送到相同的错误页面,无论错误是什么或他们在哪个页面上。
让我们只是为了论证而假装我不想看到错误,并且页面正在被机器人不断编辑和更新,这些机器人每23或51页编辑就会导致错误。
我正在寻找一些可能涉及php.ini文件或htaccess的东西,我可以在网站上做些什么。
有没有说方式普遍告诉PHP重定向到任何致命错误的某个页面?捕捉所有的错误,并重定向到页面用PHP
说我有一个网站有很多不同的文件,我想隐藏问题(同时仍然记录它们)并将用户发送到相同的错误页面,无论错误是什么或他们在哪个页面上。
让我们只是为了论证而假装我不想看到错误,并且页面正在被机器人不断编辑和更新,这些机器人每23或51页编辑就会导致错误。
我正在寻找一些可能涉及php.ini文件或htaccess的东西,我可以在网站上做些什么。
您可以更改的Apache默认的500错误页面与'ErrorDocument'指令:
ErrorDocument 500 /500.html
这会将500内部服务器错误重定向到500.html。你也可以在那里使用一个PHP页面并邮寄引用页面。
要捕获错误,您可以将这些错误记录到error.log文件中。在你的php.ini文件中使用以下两个指令:
error_log = /var/log/httpd/error_php
log_errors = On
不要忘记重新启动Apache。
这不适用于PHP错误。 – Cybot 2013-07-17 07:27:29
set_error_handler
- 设置 用户定义的错误处理函数
基本的例子:
<?php
function errorHandler($n, $m, $f, $l) {
header('Location: http://example.com/error.php');
}
set_error_handler('errorHandler');
...
?>
首先,改变你的php.ini取消错误消息,并启用日志记录:
display_errors=Off
log_errors=On
error_log=whatever/path
写一个错误处理程序(不同于set_error_handler
,这其中也抓住严重错误)
register_shutdown_function('errorHandler');
function errorHandler() {
$err = error_get_last();
if($err)
include "error_page.php"; // your custom error page
}
将这个在一个文件中的代码,并告诉PHP将其包括在每个请求(见auto_prepend_file
@http://php.net/manual/en/ini.core.php)
Ref:http://stackoverflow.com/questions/2171055/register-shutdown-function-registered-function-cannot-include-files-if-terminat 如果您遇到语法分析错误,此代码将不起作用。这些包含会使你的脚本默默地失败,并没有留下太多痕迹。 如果有人对此有任何意见,我是全部耳朵。 – 2010-01-31 16:48:16
这实际上有点接近为我工作的答案。 http://stackoverflow.com/a/19263800/1993494 – relipse 2013-10-09 05:31:06
当我终于得到它的工作,我张贴我的解决方案在这里:http ://stackoverflow.com/a/19263800/1993494 – relipse 2013-10-09 05:31:28