6

我的 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 也存在问题。这个问题似乎突然出现了。我不知道我改变了什么,甚至没有更新或安装/卸载插件。

提前致谢。

4

1 回答 1

4

除非 PHP 正在处理 .js 文件请求,否则这不会发生。

检查您的 Apache2 conf 文件并检查 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。依靠 PHP 脚本进行 zip 压缩确实不是最好的做事方式(很明显,因为它会产生类似这样的问题!)。

希望这可以帮助某人。

读者可能还会发现这篇文章很有用: Caching problem using "AddHandler application/x-httpd-php"

我还要补充一点,出于性能原因,随意使用 PHP 处理 JS 和 CSS 等静态文件并不是一个好主意。除非文件是真正动态的,否则永远不要调用 PHP 处理程序。否则,您将向服务器添加不必要的资源要求。

于 2012-11-19T09:41:37.140 回答