men*_*sch 3 javascript php plugins parsing cakephp
我正在开发一个Cake插件中包含的一个JavaScripts,我遇到了问题.由于某种原因,JavaScript文件被解析为PHP文件,因此加载文件会引发此错误,这是一个PHP解析错误:
<b>Parse error</b>: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING
Run Code Online (Sandbox Code Playgroud)
使用HtmlHelper调用脚本:
<?php echo $this->Html->script(array(
'/myplugin/scripts/tiny_mce/tiny_mce',
)); ?>
Run Code Online (Sandbox Code Playgroud)
该错误由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代码.不出所料,它失败了!
这已经成为Lighthouse(CakePHP的bug跟踪系统)上的一个bug.建议的修复方法是:
app/webroot/tinymce => app/Plugin/TinyMCE/webroot)简而言之,CakePHP可能无法修复此问题,因为他们希望保持对能够在JS/CSS文件中包含PHP代码的支持.
| 归档时间: |
|
| 查看次数: |
1259 次 |
| 最近记录: |