0

こんにちは、

CodeIgniter の load() メソッドに問題があります。ローカルではすべてうまくいきます。しかし、オンライン サーバーで自分のアプリケーションをチェックしようとすると、問題が発生します <=>要求されたファイルを読み込めません: 警告/情報

私が見つけた解決策は、これを行うことです<=>

(1) ローカルで

public function test() {
         $this->load->view('warning/info');
    }

(2)オンラインサーバーでは、そのような拡張子を指定する必要があります

public function test() {
     $this->load->view('warning/info.php');
}

なぜ私はこれをディスる必要があるのか​​ わかりませんか?誰かが理由を知っているなら、私に説明してください。

どうもありがとうございました。私は英語が堪能でなくて申し訳ありませんが、私のメッセージを理解していただければ幸いです。

4

1 に答える 1

0

問題の特定

system/core/Loader.phpの_ci_load() メソッドを調べて、問題の原因と思われるコードを抽出しました。

#/system/core/Loader.php::_ci_load

$_ci_ext = pathinfo($_ci_view, PATHINFO_EXTENSION);
$_ci_file = ($_ci_ext == '') ? $_ci_view.'.php' : $_ci_view;

foreach ($this->_ci_view_paths as $view_file => $cascade)
{
        if (file_exists($view_file.$_ci_file))
        {
                $_ci_path = $view_file.$_ci_file;
                $file_exists = TRUE;
                break;
        }

        if ( ! $cascade)
        {
                break;
        }
}

....

if ( ! $file_exists && ! file_exists($_ci_path))
{
        show_error('Unable to load the requested file: '.$_ci_file);
}

問題の修正

使用されているメソッドを見てきましたが、それらはすべて PHP 4.0.3 以降をサポートしているようです。そのため、互換性のないバージョンの PHP に関係する問題ではない可能性が高いです。

問題を引き起こすと思われるコードは次のとおりです。

if ( ! $file_exists && ! file_exists($_ci_path))
{
        show_error('Unable to load the requested file: '.$_ci_file);
}

さて、私の推測では、このメソッドは実際にパスするため、 .php拡張子を追加すると機能すると思います。

file_exists($_ci_path)

これが発生した場合にのみ true に設定されるため、可能なアクションは $file_exists 変数に何が起こるかを確認することです。

if (file_exists($view_file.$_ci_file))

役立つ追加情報

php.net の file_exists メソッドに関する興味深いコメントもあります。

file_exists will have trouble finding your file if the file permissions are not read enabled for 'other' when not owned by your php user. I thought I was having trouble with a directory name having a space in it (/users/andrew/Pictures/iPhoto Library/AlbumData.xml) but the reality was that there weren't read permissions on Pictures, iPhoto Library or AlbumData.xml. Once I fixed that, file_exists worked.

おそらく、それらのファイルのアクセス許可を投稿するか、そこを探索してみてください。

また、システム クラスでデバッグを試みて、そこで問題が発生していないかどうかを確認することもできます。私は自分自身に似たものに遭遇したことがないので、それは非常に奇妙です.正直に言うと、ライブラリがどのように間違いを犯すのかわかりません.パーミッションと関係がある可能性が最も高いです.

于 2013-10-23T14:49:53.393 に答える