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/のrequired' /var/www/ html/test_lms/include/mysql.processing.php'(include_path ='。:/ usr / local / lib / php')を開くことができませんでした 513行目の html/test_lms / include / IMEXporter.class.php

IMEXporter.class.phpエラーをスローしているLINE513のPHP

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

ファイルはそこにあります。
ファイルはchmod777です
。2つのファイルは両方とも同じユーザーとグループによって所有されています。
なぜ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.phpWindows+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

エラーメッセージでは、ファイル名の大文字と小文字は、投稿したrequire行と同じではありません...タイプミスではありませんか?

于 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自体であり、誤解を招くエラーレポートがあり、2つは問題のキャッシュと解決策の除外でした。

于 2012-09-30T20:54:21.137 に答える
0

おそらく問題は、phpが同じフォルダーにないことです。URLまたは別のフォルダーから.phpを含めることはできません。同じパス上にある場合、またはパス上にあるサブフォルダー内にある場合は、phpを含めることができます。私の英語は申し訳ありませんが、あなたは私が言っていることを理解するだろうと思います。

于 2012-09-30T20:44:19.600 に答える