我正在使用CakePHP 2.0.4,PHP 5.3.1,Apache 2.2.14。
例如:文件名是F#7m7~1.gif。它确实存在,路径和文件名是正确的。
在打印HTML标签之前,我使用urlencode()对其进行编码,标签如下:
<img src="/chord/img/chords/F%2523m7~1.gif" alt="F#m7">
但是图片没有加载。 ('Chord'是CakePHP插件)
我还尝试直接在浏览器http://myapp.localhost/chord/img/chords/F%2523m7~1.gif上加载它,但我得到的是:“缺少控制器错误:无法找到Chord.ImgController。”
一切正常,文件为A~1.gif,但它以文件名为例,如F#m~1.gif,B(7)~1.gif等。
在纯PHP编码版本中,Everthing工作正常。现在,它不在CakePHP上工作。
有人有线索吗?
答案 0 :(得分:0)
您似乎对其进行了双重编码,F#7m7~1.gif
的正确urlencode为F%237m7~1.gif
,而不是F%2523m7~1.gif
。只需删除其中一个。
Missing Controller错误只是因为你的服务器上没有这样的文件,所以Cake认为你正试图在Chord插件中调用ImgController。试试http://myapp.localhost/chord/img/chords/F%237m7~1.gif,它应该有用。
无论如何,正如@GordonM指出的那样,最好坚持使用普通字符作为文件名。