【发布时间】:2012-04-26 05:31:50
【问题描述】:
我有一个 PHP 脚本,其中包含(或“需要”)一组其他脚本。这对于导入我的所有课程非常有效。我遇到的是 HTTP 500 错误。我已经逐条筛选并注释掉代码,以确定它在我的一个文件中的 require_once 上失败了。
代码如下:
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 );
}
}
?>
此代码将按原样运行,但一旦我取消注释需求,它就会失败。令我感到奇怪的是,我在此服务器上还有许多其他站点,它们的行为方式几乎相同。
我觉得好像我的 PHP 错误报告被关闭了……我不知道如何重新打开;因为我刚刚升级到 PHP 5.3。如果 PHP 失败,我通常会期望在我的浏览器中出现“无法打开文件”或类似内容。
也许有人可以告诉我为什么这会触发 HTTP 500,或者只是如何重新启用错误报告。将不胜感激;这似乎没有多大意义。
【问题讨论】:
-
您可以查阅您的服务器日志吗?
-
你的class文件夹在根目录吗?尝试在课前添加“/”?只是猜测。
-
最好使用
$_SERVER['DOCUMENT_ROOT'] . '/classes/standard/; -
这些都是有效的 cmets - 事实证明,在 XAMPP 中运行良好的相对路径并没有很好地转换为 IIS。重新启用 php 错误报告后,我设法找出了这些错误,并更正了它们。似乎文件 IO 从 4.?.? 改变了一点。到 5.3。