我的WordPress“编辑帖子”页面中的TinyMCE编辑器似乎已被打破。 Chrome控制台显示:
Resource interpreted as Script but transferred with MIME type text/html: "http://mysite.com/wp-includes/js/tinymce/langs/wp-langs-en.js?ver=349-20805". post.php:62
Resource interpreted as Script but transferred with MIME type text/html: "http://mysite.com/wp-includes/js/tinymce/tiny_mce.js?ver=349-20805". post.php:62
Uncaught SyntaxError: Unexpected token < tiny_mce.js:1
Uncaught ReferenceError: tinyMCE is not defined wp-langs-en.js:1
Uncaught ReferenceError: tinymce is not defined post.php:1180
如果我在Chrome开发者工具中查看tinymce.js,我会看到这些响应标题:
Cache-Control:public, must-revalidate, proxy-revalidate
Connection:close
Content-Type:text/html
Date:Sat, 16 Jun 2012 01:40:42 GMT
Pragma:public
Server:Apache
Transfer-Encoding:chunked
Vary:Accept-Encoding
X-Powered-By:PHP/5.2.17, W3 Total Cache/0.9.2.4
这个回应:
<br />
<b>Parse error</b>: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in <b>/home/mysite/public_html/wp-includes/js/tinymce/tiny_mce.js</b> on line <b>1</b><br />
正在正确检索和执行各种其他.js文件。关闭W3TC没有任何区别。 Firefox中也存在问题。这个问题似乎突然出现了;我不知道有什么我改变了,甚至没有更新或安装/卸载插件。
提前致谢。
答案 0 :(得分:4)
除非PHP正在处理.js文件请求,否则不会发生这种情况。
检查您的Apache2配置文件,并检查conf.d文件夹中的任何conf.d文件。另请检查.htaccess文件。在这些文件中寻找这样的东西:
AddHandler application/x-httpd-php .js
它可能出现在这样的块中:
<FilesMatch ".js$">
AddHandler application/x-httpd-php .js
php_value default_mimetype "text/javascript"
</FilesMatch>
一些.htaccess和apache配置教程建议使用PHP来处理.js文件,因为它会让你做一些技巧。最常见的原因是调用PHP GZIP文件以ZIP压缩JS文件。不幸的是,使用php来处理tiny_mce.js似乎打破了Wordpress。 PHP正在绊倒tiny_mce.js文件中的某些东西 - 也许是因为它缩小了?
我遇到了这个问题,不得不从我的配置中删除.js文件的php处理程序。实际上没有必要,因为我的Apache被配置为自己进行压缩。我没有调用PHP文件来执行gzip。依靠用于zip压缩的PHP脚本确实不是最好的做事方式(显然是因为它会产生像这样的问题!)。
希望这有助于某人。
读者也可能会发现此帖子很有用: Caching problem using "AddHandler application/x-httpd-php"
我还要补充说,任意使用PHP来处理像JS和CSS这样的静态文件并不是出于性能原因的好主意。除非文件是真正动态的,否则不应该调用PHP处理程序。否则,您将向服务器添加不必要的资源要求。