我正在开发一个Cake插件中包含的一个JavaScripts,我遇到了问题.由于某种原因,JavaScript文件被解析为PHP文件,因此加载文件会引发此错误,这是一个PHP解析错误:
<b>Parse error</b>: Syntax error, unexpected T_CONSTANT_ENCAPSED_STRING
使用HtmlHelper调用脚本:
<?PHP echo $this->Html->script(array(
'/myplugin/scripts/tiny_mce/tiny_mce',
)); ?>
该错误由压缩的tiny_mce.js文件触发,该文件位于脚本目录的子目录中,未压缩的版本显示相同的行为.问题是我在本地设置上没有遇到问题.
远程服务器正在运行PHP 5.2.17并启用了mod_rewrite,我的Cake版本是1.3.10 – 我的测试设置运行PHP 5.3.4和相同版本的Cake.
它可能是重写或权限错误,但我的应用程序运行正常,其他脚本(包括子目录和远程的脚本)加载没有问题.
编辑:
将tiny_mce目录移出Cake安装并链接到它后,JavaScript被正确解析.我猜这是一个与mod_rewrite和插件处理有关的错误,但我没有找到与此行为相关的其他情况.
解决方法:
我也遇到过这个问题,文件完全相同:Tiny MCE JavaScript.
这是由于CakePHP调度程序处理插件的webroot中的文件的方式.它选择对包含CSS或JS扩展的文件执行PHP包含,并且只是发生tiny_mce.js文件包含字符<?,这意味着它不是仅输出JavaScript文本而是尝试将后续行解析为PHP码.不出所料,它失败了! 这是灯塔上的raised as a bug(CakePHP的bug追踪系统).建议的修复方法是:
>创建从插件webroot到app webroot的符号链接(例如app / webroot / tinymce => app / Plugin / TinyMCE / webroot)
>关闭PHP INI中的PHP短标签 – 无论如何都是一个很好的原则