0

警告:require_once(/var/www/html/test_lms/include/mysql.processing.php):无法打开流: /var/www/html/test_lms/include/IMEXporter.class.php中没有这样的文件或目录第513

致命错误:require_once():在 /var/www/中打开所需的 '/var/www/html/test_lms/include/mysql.processing.php' (include_path='.:/usr/local/lib/php') 失败第513的 html/test_lms/include/IMEXporter.class.php

来自 LINE 513 的 PHPIMEXporter.class.php抛出错误

require_once dirname(__FILE__) . "/mysql.processing.php";

文件在那里。
该文件是 chmod 777。
这两个文件都属于同一个用户和组。
为什么php对我这样做?


问题可能是它mysql.processing.php本身已损坏,即使 php 找到了它拒绝检索它的文件,而是抛出一个Derp! cant find file. Derp.. 像那样误导我有点愚蠢,但这是有可能的。我现在正在检查我的代码。

不,我尝试擦除整个脚本mysql.processing.php并写

echo "Hello you impudent php";

它仍然找不到文件。所以它不是文件损坏的问题。我还修复了文件案例问题。从大写 P 到小写,它仍然不会去。我试图包含一个名为 test.php 的文件,但它也找不到那个文件。

4

4 回答 4

2

您遇到区分大小写的问题。您很可能将表格windows environment移至Linux

如果您的文件mysql.processing.PHP require_once dirname(__FILE__) . "/mysql.processing.php可以在 windows + apache 服务器上运行,但在 Linux + apace 上失败

使用以下内容获取实际文件名

var_dump(scandir(__DIR__));

请运行这个简单的测试

error_reporting(E_ALL);

$name = "mysql.processing.php";
$file = __DIR__ . "/mysql.processing.php";
$dir = scandir(__DIR__);
$func = array("file_exists","is_file","is_readable");

echo "<pre>";
foreach ( $func as $fun ) {
    if (! $fun($file)) {
        echo $fun, " - Failed ", PHP_EOL;
    } else {
        echo $fun, " - Failed ", PHP_EOL;
    }
}

if (! in_array(basename($file), $dir)) {
    echo basename($file), " in_array Error", PHP_EOL;
} else {
    echo basename($file), " in_array OK", PHP_EOL;
}

if (! in_array($name, $dir)) {
    echo $name, " in_array Failed", PHP_EOL;
} else {
    echo $name, " in_array Ok", PHP_EOL;
}

if ($name !== basename($file)) {
    echo $name, " basename Failed", PHP_EOL;
} else {
    echo $name, " basename OK", PHP_EOL;
}
于 2012-09-30T19:53:30.173 回答
1

好吧,在错误消息中,文件名的大写与您发布的要求行中的不同...您确定这不是错字吗?

于 2012-09-30T19:53:09.303 回答
1

好的,这就是问题所在。还记得我提到我的mysql.processing.php文件可能被破坏的时候吗?那是问题的一半。显然 php在以下情况require下会返回错误failed to open stream: No such file or directory.. etc

1) 找不到文件。

2)找到文件,但无法打开。

该错误消息具有误导性,使您相信这是一个路径问题。有时是这样,但像我这样的情况,它只是返回文件的语法问题。现在是下半场。我对我的所有语法错误进行了更正,mysql.processing.php但它仍然无法正常工作。所以我只是重新启动了我的服务器,现在它可以工作了。

问题的后半部分是php有缓存php文件的讨厌倾向。通常,您可以开始编辑 php 脚本、修复解决方案等,但没有任何进展,因为 php 不会立即使您的更改生效。这可能会导致您从一个解决方案到下一个解决方案跌跌撞撞,不断更改您的脚本,感觉就像您在迷宫中一样。

有一些方法可以阻止 php 缓存特定文件。但问题在于 php 本身,它的错误报告具有误导性,另外两个问题在于它的问题缓存和排除解决方案。

于 2012-09-30T20:54:21.137 回答
0

也许问题是您的 php 不在同一个文件夹中,您不能包含来自 URL 或其他文件夹的 .php。如果 php 位于同一路径或路径上的子文件夹中,则可以包含它。对不起我的英语,但我想你会明白我在说什么。

于 2012-09-30T20:44:19.600 回答