我的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
Run Code Online (Sandbox Code Playgroud)
如果我在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
Run Code Online (Sandbox Code Playgroud)
而这个回应:
<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 />
Run Code Online (Sandbox Code Playgroud)
正在检索和执行各种其他.js文件.关闭W3TC没有任何区别.Firefox中也存在问题.这个问题似乎突然出现了; 我不知道我改变了什么,甚至没有更新或安装/卸载插件.
提前致谢.
除非 PHP 正在处理 .js 文件请求,否则不会发生这种情况。
检查您的 Apache2 conf 文件,并检查 conf.d 文件夹中的所有 conf.d 文件。另请检查您的 .htaccess 文件。在这些文件中查找类似以下内容:
AddHandler application/x-httpd-php .js
Run Code Online (Sandbox Code Playgroud)
它可能发生在这样的块中:
<FilesMatch ".js$">
AddHandler application/x-httpd-php .js
php_value default_mimetype "text/javascript"
</FilesMatch>
Run Code Online (Sandbox Code Playgroud)
一些 .htaccess 和 apache 配置教程建议使用 PHP 来处理 .js 文件,因为它可以让您执行一些技巧。最常见的原因是调用 PHP GZIP 文件来 ZIP 压缩 JS 文件。不幸的是,使用 php 处理tiny_mce.js 似乎会破坏 WordPress。PHP 被tiny_mce.js 文件中的某些内容绊倒——也许是因为它被缩小了?
我遇到了这个问题,不得不从我的配置中删除 .js 文件的 php 处理程序。实际上没有必要,因为我的 Apache 配置为自行进行压缩。我没有调用 PHP 文件来执行 gzip。依赖 PHP 脚本进行 zip 压缩确实不是最好的方法(显然,因为它会产生像这样的问题!)。
希望这对某人有帮助。
读者可能还会发现这篇文章很有用: Caching Problem using "AddHandler application/x-httpd-php"
我还要补充一点,出于性能原因,任意使用 PHP 处理 JS 和 CSS 等静态文件并不是一个好主意。除非文件是真正动态的,否则您不应该调用 PHP 处理程序。否则,您将向服务器添加不必要的资源需求。