要求路径未被接受

时间:2012-09-30 19:33:50

标签: include require require-once php

  

警告的:   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/html/test_lms/include/mysql.processing.php'   (include_path ='。:/ usr / local / lib / php')in    /var/www/html/test_lms/include/IMEXporter.class.php 在线    513

来自IMEXporter.class.php LINE 513的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 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:1)

好吧,在错误消息中,文件名的大小写与您发布的require行中的大小写不一样...你确定它不是拼写错误吗?

答案 2 :(得分: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本身,误导性错误报告,以及两个缓存问题并排除解决方案的问题。

答案 3 :(得分:0)

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