0

支払ったサーバーで動作するスクリプトがあります。ただし、ローカルホストの下に同じコードをインストールしようとすると、無限ループでこのエラーが発生します。

PHP 警告: readdir() はパラメーター 1 がリソースであることを想定しています。

私は周りを見回し、それがフォルダーアクセスであると言う人もいますが、読み取りおよび書き込みアクセスが100%であるローカルホストではなく、リモートサーバーで機能します。

これは、php.ini の設定によってトリガーされる可能性がありますか?

それ以外に、これをトリガーするものは他にありません。

これは、エラーが指摘されているコードです。しかし、あるサーバーでは機能するが他のサーバーでは機能しないため、コードではないと思います。修正 このコードを hostgator にロードしたところ、私の securesignup サーバーでも問題なく動作しました。どちらも正常に動作します。このエラーが発生するのは localhost のみです。

 $upgraded_folder_path = $CFG['site']['project_path'] . "languages/" . $CFG['lang']['default'] . "/" . strtolower($value) . "/" . $upgraded_folder_name;
            if (!is_dir($upgraded_folder_path) && !($handle = opendir($upgraded_folder_path)))
                {
                while (false !== ($file = readdir($handle)))
                    {
                    if ($file == "." || $file == "..")
                        {
                        continue;
                        }
                    $file_name = $upgraded_folder_path . "/" . $file;
                    if (is_file($file_name))
                        {
                        require_once($file_name);
                        }
                    }
                closedir($handle);
                }
4

1 に答える 1

2

無効なリソースの場合、つまり、ディレクトリを開くことができなかったreaddir()場合にのみ呼び出しています。

 if (!is_dir($upgraded_folder_path) && !($handle = opendir($upgraded_folder_path)))

既存のディレクトリと開くことができるディレクトリのみを読み取ることができます。!その - ステートメントの両方の条件からを削除すると、if正常に機能するはずです。ただし、ディレクトリが存在、ユーザーがそこから読み取る権限を持っていることも確認する必要があります。

于 2013-01-09T14:13:04.863 に答える