微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么在我的Cake插件中将JavaScript文件解析为PHP?

我正在开发一个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标签 – 无论如何都是一个很好的原则

简而言之,CakePHP可能无法修复此问题,因为他们希望保持对能够在JS / CSS文件中包含PHP代码支持.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐