7

我有一个 PHP 脚本,其中包括(或“需要”)一组其他脚本。这对于导入我的所有课程非常有效。我遇到的是 HTTP 500 错误。我已经筛选并逐个注释掉代码,以确定它在我的一个文件中的 require_once 上失败。

这是代码:

索引.php:

<?php
require_once("std/classes.php");
?>

和标准/classes.php:

<?php
RequireStandards();
RequireAddons();

function RequireStandards( )
{
    $ClassFiles = scandir("classes/standard");

    foreach( $ClassFiles as $ClassFile )
    {
        if( $ClassFile == "." || $ClassFile == ".." )
            continue;

        //require_once("classes/standard/" . $ClassFile );
    }
}

function RequireAddons()
{
    $ClassFiles = scandir("classes");

    foreach( $ClassFiles as $ClassFile )
    {
        if( $ClassFile == "." || $ClassFile == ".." || $ClassFile == "standard" )
            continue;

        //require_once("classes/" . $ClassFile );
    }
}

?>

此代码将按原样运行,但一旦我取消注释需求,它就会失败。令我感到奇怪的是,我在此服务器上还有许多其他站点,它们的行为方式几乎相同。

我觉得好像我以某种方式关闭了我的 PHP 错误报告......我不知道如何重新打开;因为我刚刚升级到 PHP 5.3。如果 PHP 失败,我通常会期望在我的浏览器中出现“无法打开文件”或类似内容。

也许有人可以告诉我为什么这会触发 HTTP 500,或者只是如何重新启用错误报告。将不胜感激;这似乎没有多大意义。

4

2 回答 2

13

要启用错误报告:

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
require_once("std/classes.php");
?>

希望这应该有效。

编辑:如果这确实有效,请记住在将任何内容放入实时、面向公众的环境之前关闭显示错误!

于 2012-04-13T20:30:44.257 回答
2

您可以使用 error_reporting() 函数暂时重新打开错误报告,例如,为了显示所有错误,请将以下代码放入您的文件中:

error_reporting(E_ALL);

当然,要永久更改它,您应该编辑您的 php.ini 文件,并确保您启用了 error_reporting 以及 display_errors(至少如果这不是生产环境)。你也可以试试:

ini_set('display_errors', 1);

虽然如果页面上有致命错误,这可能不起作用。同样,要永久启用此功能,您必须修改 php.ini 文件。

通常建议您仅在非生产系统上启用 display_errors,以便用户不会通过您的错误消息获得潜在的敏感信息。

无论哪种情况,您都应该能够在 apache 错误日志中找到 php 错误,在 ubuntu 上,它位于此处:

/var/log/apache2/error.log

尽管它可能会根据您的分布而有所不同。

于 2012-04-13T20:33:52.697 回答