1

error.log に次のメッセージが表示されます。

Request URL: /files/thumbs1/1354046882.jpg
Stack Trace:
#0 /path/to/web/app/webroot/index.php(92):     Dispatcher->dispatch(Object(CakeRequest), Object(CakeResponse))
#1 {main}
2013-05-08 13:44:16 Error: [MissingControllerException] Controller class     FilesController could not be found.
Exception Attributes: array (
  'class' => 'FilesController',
  'plugin' => NULL,
)

画像ファイル /files/thumbs1/1354046882.jpg が存在し、表示されます。しかし、これとは別に、error.log にエラーが表示されます。次のように、ビュー .ctp で手動で URL を生成します。

<img src="/files/thumbs1/1354046882.jpg" alt="">

echo $this->Html->image('cake_logo.png', array('alt' => 'CakePHP')); は使用しません。

Webroot のディレクトリ「ファイル」がコントローラーとして識別されないように、ControllerException を追加するにはどうすればよいですか。FilesController がありません。それとも、「ファイル」が使用されるべきではない CakePHP の保護された単語である可能性はありますか? これまでの CakeBook に関連するものは見つかりませんでした。

/webroot の .htaccess

<IfModule mod_rewrite.c>
   RewriteCond %{HTTP_HOST} !www.domainname.com
   RewriteRule (.*)  http://www.domainname.com/$1 [R=301,L]
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>

CakePHP 2.3 にアップデートしました。助けてくれてありがとう。

4

2 に答える 2

0

/files/ で始まるリクエスト URL が index.php にルーティングされないように、.htaccess にルールを追加します。

余談ですが、不足しているファイルへの URL を生成しないようにしてください :)

于 2013-05-08T16:51:31.983 に答える
0

私がすべてを正しく理解していれば、あなたの唯一の問題は正しい URL を書いていないことです。

ここでいくつかのことを想定します。フォルダーの構造は次のようになります

/app
    /Config
    /Console
    ...
    /webroot
        /files
/lib
/plugins
/vendors

そして、あなたが望むのは、このファイル ディレクトリにある画像を表示することですよね?

次に、パスが正しいことを確認する必要があります。Cake にウェブルートにファイルが欲しいと伝えていない場合は、このタイプの URL を使用します。

files/something/something-else

Cake は「わかりました。このパスはcontroller/action/paramsです (これは一般化です。明らかに、この仮定はroutingで変更できます)」と考え、filesがコントローラーではないため失敗します。

したがって、これを修正するには、webroot ディレクトリ上の何かを指定するたびに、それをパスに追加します。あなたの場合、そうあるべきです

<img src="<?php echo $this->webroot; ?>files/thumbs1/1354046882.jpg" alt="">

ファイルが存在する場合は、エラーなしで表示されるはずです。

于 2013-05-08T23:13:41.950 に答える