越过“因为发生内部服务器错误而无法显示页面。”没有任何选项可以启用错误报告

问题描述 投票:0回答:3

我有一个非常愚蠢的问题,我不知道如何解决它。我的一位客户希望我在他的网站上放一个简单的PHP脚本,该脚本托管在Windows / PHP共享主机上。

问题是,他们已禁用错误报告,我无法访问错误日志。我唯一得到的是

由于发生内部服务器错误,无法显示页面。

我试过了

<?php
error_reporting(E_ALL);
ini_set('display_errors','On');

foreach(1 as $i);
?>

但它没有改变任何东西,我仍然得到通用500错误。还有其他方法可以让PHP显示错误消息吗?托管技术支持完全没有响应,但我想以某种方式解决这个问题,即使有一些hackery,这意味着我不关心解决方案有多脏,我关心的是我可以看到错误消息详细地。

我试图添加自定义错误处理程序,你们建议,但我仍然得到500页,没有写错误日志

<?php
date_default_timezone_set("Europe/Prague"); // tried commenting this line out, didn't help

function fileLogHandler($errno, $errstr, $errfile, $errline) {
    $logFile = "error.log";
    $f = fopen($logFile, "a") or die("Couldn't open log file for write");
    fwrite($f, strftime("%c") . " $errstr on line $errline\nin file $errfile\n\n");
}

set_error_handler("fileLogHandler");

foreach(1 as $i);
?>

当我在本地计算机上执行此操作时,它按预期工作

$ php -f test.php  && cat error.log 
Fri Oct 28 15:40:14 2011 Invalid argument supplied for foreach() on line 12
in file /Users/darth/Sites/shalamar/test.php

但它在主机上不起作用......

我试图将整个脚本愚蠢到

<?php
$logFile = "error.log";
$f = fopen($logFile, "a");
fwrite($f, "Hi");
?>

并最终意识到,我可能没有该文件夹的写权限。问题是,它是一个Windows服务器,如果我尝试通过FileZilla更改权限,我会很开心

Command:    SITE CHMOD 666 error.log
Response:   500 'SITE CHMOD 666 error.log': command not understood

我试图谷歌周围,看起来我无法通过FTP设置文件权限。

通过电子邮件发送日志也会导致500错误

mail("[email protected]", "Voice of desperation");

现在有什么建议?

更新:感谢到目前为止的所有建议,但我发现我甚至无法访问文件系统,因此我无法写入日志文件。至少那是它的样子,所以我和技术支持人员谈过,他们说他们会在下周内调查它。

php
3个回答
2
投票

这就是错误日志的用途。

尝试在同一目录中创建.user.iniphp.ini文件

error_log = phperrors.log 

(首选绝对路径)

然后再次运行您的脚本,然后查找此文件及其内容。


-1
投票

如何使用set_error_handler()然后将错误消息写入文件?


-1
投票

通过电子邮件获取PHP错误:

function custom_error_handler ($errno, $errstr, $errfile, $errline){
    $content  = "Time ".date("d.m.Y G:i")."\n\n";
    $content .= "Error No: ".$errno."\n";
    $content .= "Error String: ".$errstr."\n";
    $content .= "Error File: ".$errfile."\n";
    $content .= "Error Line: ".$errline."\n\n";
    mail("[email protected]", "[ERROR HANDLER]", $content);
}

set_error_handler ("custom_error_handler");
© www.soinside.com 2019 - 2024. All rights reserved.