2012-03-06 7 views
0

CodeIgniterに問題があります。イメージがサーバー上に見つからない場合は、コントローラのインスタンスが作成されます(ビューを呼び出したものに加えて)。イメージが見つからないときにCodeigniterコントローラが作成される

私はこのすべてが混乱していると知っているので、これは私が言っていることを観察するコードです。

が404エラーページを上書きするようにコントローラを追加し、私はこの1つを追加しました:私はこれがきれい2.1.0 CIのバージョンに変更しました

// add application/controllers/Errors.php 
Class Errors extends CI_Controller { 

    public function error_404() { 
     echo 'error'; 
    } 
} 
// change routes.php 
$route['404_override'] = 'Errors/error_404'; 

が持つデフォルトのものではないコントローラを使用します私はそれをデバッグするための別の方法を見つけ出すことができませんでした

// add application/controllers/Foo.php 
Class Foo extends CI_Controller { 

    public function index() { 
     echo '<img src="doesntexist.png" />'; 
    } 

} 

ので、私はCodeIgniter.phpのイベントを書き込むためのログを作成しました::unexisting画像、私はこれを使用し

// add on CodeIgniter.php line 356 
$path = 'log.txt'; //Place log where you can find it 
$file = fopen($path, 'a'); 
fwrite($file, "Calling method {$class}/{$method} with request {$_SERVER['REQUEST_URI']}\r\n"); 
fclose($file); 
これにより

、インデックス機能を訪れる生成ログは次のとおりです:私が持っている問題、エラー・クラスのインスタンスが作成されている

Calling method Foo/index with request /test/index.php/Foo 
Calling method Errors/error_404 with request /test/index.php/doesntexist.png 

答えて

0
that is that when an image is not found on the server, the instance of a controller is created 

実際はありません。私が考えているのは、イメージの相対パスを使用しているので(ヘッダの前に何かを出力しているので間違っている)、ブラウザはイメージをCIに直接添付しますしたがって、サーバーにこの要求を行うURL:(正しく)が存在するので、それはエラークラスを発行しないコントローラへの要求としてCIによって解釈される

index.php/doesntexist.png 

echo '<img src="/doesntexist.png" />' 

absoluthパスを使用して、またはURLヘルパーからBASE_URL()メソッドを使用して:あなたの実際のコード(私も、ビューの画像を置くところ)であなたが行うことができ

、:

echo '<img src="'.base_url().'doesntexist.png" /> 

これは、右の要求(/test/doesntexist.png)を取得するためにサーバーに伝える必要があり、そのエラーをトリガしません。

関連する問題