PHP 强制 Apache 报错

5
感谢这个论坛,我了解到PHP的头部函数实际上并没有将头部发送到Apache服务器,而只是发送给客户端。
我的目标是生成一个错误500,并让Apache显示相应的页面。有办法强制执行吗?
提前感谢!(还有,支持蓝军!)

嗯,不知道这是否可能。你想做什么?在哪个点上你想生成500? - Pekka
1
那些蓝色的人是指谁?他们是否缺氧了? ;) - Pekka
实际上,我们制作了一些Apache自定义错误页面,并且我正在清理PHP错误处理,以便拥有一个唯一的错误页面(这将是Apache页面)... 我会尝试编写一个错误的.htaccess指令(或者说如何故意学习做错事情...)至于蓝队方面,我想你们会在7月11日听到更多关于它的消息;) - fbiville
3个回答

4

有一种方法可以向浏览器发送500错误,但您需要自己提供页面:

<?php
header('HTTP/1.1 500 Internal Server Error');
echo <<<ERRORTEXT
The server encountered an unexpected condition which prevented it 
from fulfilling the request.
ERRORTEXT;
// also notify server operator, maybe?
exit;
?>

3

将重定向到导致500错误的URL。

例如,具有无效.htaccess指令的URL。


1
我尝试将以下内容放入文件的.htaccess中: RewriteRule ^error.php$ /force_error_500.php [NC,R=500](force_error_500.php不存在)header('Location:error.php'); 只会导致404错误... 我猜我错过了一些要点 :( - fbiville
是的...创建一个无效的 .htaccess 文件。你的是有效的 :) - zaf
抱歉,抱歉,抱歉... 现在我有这个: RewriteRule ^error.php$ /stupid_directive.php [YMCA]每个URL都会出现500错误...但我只想在www.mysite.com/error.php上看到它... - fbiville
1
好的,创建一个目录并将无效的htaccess放在其中。在error.php中只需重定向到该目录即可。 - zaf

0

只需编写一个有问题的 CGI 脚本:

// Don't include stdio
int main() {
   printf("This won't work.\n");
   return 0;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接