PHP在require_上失败一次

PHP在require_上失败一次,php,include,Php,Include,我有一个PHP脚本,其中包括(或“需要”)一组其他脚本。这对于导入我的所有类是有效的。我遇到的是HTTP 500错误。我已经逐一筛选并注释了代码,以确定在我的一个文件中,它在require_上失败了一次 代码如下: index.php: <?php require_once("std/classes.php"); ?> 和std/classes.php: <?php RequireStandards(); RequireAddons(); function Requir

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

代码如下:

index.php:

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

和std/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 );
    }
}

?>

这段代码将按原样工作,但一旦我取消对requires的注释,它就会失败。让我感到奇怪的是,我在这台服务器上有很多其他网站的行为方式几乎相同

我感觉好像我的PHP错误报告被关闭了。。。我不知道如何重新打开它;因为我刚刚升级到PHP5.3。如果PHP失败,我通常会在浏览器中看到“无法打开文件”之类的内容


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

要启用错误报告:

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

希望这能奏效


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

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

错误报告(E_ALL)

当然,要永久更改此设置,您应该编辑php.ini文件,并确保启用了错误报告以及显示错误(至少如果这不是生产环境)。您也可以尝试:

ini\u集('display\u errors',1)

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

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

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

/var/log/apache2/error.log


尽管它可能会因您的分布而有所不同

你能查阅你的服务器日志吗?你的类文件夹在根目录中吗?尝试在上课前添加“/”吗?只是猜测一下。可能是包含路径有问题。最好使用
$\u服务器['DOCUMENT\u ROOT']/类别/标准/这些都是有效的注释-事实证明,在XAMPP中运行良好的相对路径并没有很好地转换为IIS。在重新启用php错误报告后,我设法找出了哪些错误,并进行了更正。似乎文件IO从4.更改了一点。?。?谢谢你。这就是我希望得到的答案。虽然@Madbreaks'的答案是“一个答案”,但它并不是我问的任何问题的答案。我会采纳你的建议,建立一个自动加载,但是人们能开始回答真正的问题吗,而不是用“这就是你应该如何编写代码”来回答?“重写你的代码”是对“我知道这是有效的php,为什么这段代码不起作用”的回应,这是非常刺激的。不管怎样谢谢你。至于Jim D——这让我回到了实际的PHP错误之上,我现在可以修复几个“无法打开流”的错误。非常感谢您的帮助。@805-很高兴我能帮忙!ini_集合('display_errors')位通常会根据生产/环境常量进行切换。这样,我就不会笨手笨脚,不小心忘了关掉它。