我正在使用 PHP 5.4、CakePHP 2.2.3 开发一个应用程序。问题是,在我的本地服务器(XAMPP)中,这个错误不会发生(PHP 5.4)。
但在我的在线服务器中,它确实如此(PHP 5.3)。
错误是链接中的那个奇怪的小字符:
这里:sgc/noticias/�avascript:void(0)
大多数奇怪的字符是通过数据库获取的数据。
这仅在我link
使用HtmlHelper
. 可以说,如果我回应这个:
echo $this->Html->link('Click me', '/pages/home', array('class' => 'button', 'target' => '_blank'));
我明白了:
如图所示:/sgc/index/�pages/home
如果我回应这个:
<a href="/sgc/index/pages/home" >Click me</a>
我明白了:/sgc/index/pages/home
如果我回应这个:
echo $this->Html->link('Click me',array('controller'=>'pages', 'action' => 'view'), array('class' => 'button', 'target' => '_blank'));
我明白了:/sgc/pages/view
我读到这个问题可能类似于编码问题,但我几乎 100% 确定我的所有文件都以 UTF8 编码(没有 BOM)。
看起来这是字符:%EF%BB%BF。
此外,查看错误日志会显示:
2012-11-21 15:37:05 Error: [MissingActionException] Action IndexController::�index() could not be found.
我不认为这个问题可能与 CakePHP 版本或 CakePHP lib 中的某个文件有关,因为我刚刚上传了一个新的 CakePHP 应用程序而没有修改任何东西(只是一个简单的 CakePHP 应用程序),并且在我的在线服务器上一切正常。
错误必须在我的某些文件中,而不是在 CakePHP 中。
更新
我遵循这个答案并使用 Total Commander 在我的项目中搜索 UTF BOM 文件。但结果是,只有图像在搜索“EF BB BF”时返回。