这是我为 Silverstripe 网站设置的 nginx (1.1.19) 配置。我也在使用 PHP-FPM。目前,nginx 和 PHP-FPM 大部分都是原始设置。我使用的是单独的 FPM 池,它有自己的 unix 套接字。
server {
server_name dev.example.com;
root /srv/www/example.com/dev;
index index.php index.html;
access_log logs/dev.example.com.access.log;
error_log logs/dev.example.com.error.log;
location ~* ^.+\.(css|js|jpg|jpeg|gif|png|ico|gz|svg|svgz|ttf|otf|woff|eot|mp4|ogg|ogv|webm)$ {
expires 7d;
access_log off;
access_log off;
log_not_found off;
}
error_page 404 /framework/main.php;
location / {
try_files $uri @silverstripe;
}
location @silverstripe {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/framework/main.php;
fastcgi_param SCRIPT_NAME /framework/main.php;
fastcgi_param QUERY_STRING url=$uri&$args;
fastcgi_buffer_size 32k;
fastcgi_buffers 4 32k;
fastcgi_busy_buffers_size 64k;
fastcgi_pass unix:/var/run/php.fpm.example.sock;
}
}
在 CMS 中,它尝试加载 Tiny MCE 脚本 ( tiny_mce_gzip.php
),这是一个应该返回 JavaScript 的 PHP 脚本。但它并没有这样做,看起来它只是将 PHP 脚本作为纯文本返回。请求响应只是 PHP 文本,这导致浏览器失败,因为它试图将其解释为 JavaScript(我认为),并给出此错误:
Uncaught SyntaxError: Unexpected token <
这<
似乎是开始标签的开头<?php
。
我肯定是配置有误,才会出现这种情况。有什么建议吗?如果需要,我可以提供更多信息。
答案1
看https://gist.github.com/chtombleson/8703899
` # 将直接调用且需要解释的 php 文件列入白名单 location = /framework/thirdparty/tinymce/tiny_mce_gzip.php { include fastcgi_params; fastcgi_pass unix:/var/run/php5-fpm.sock; }
location = /framework/thirdparty/tinymce-spellchecker/rpc.php {
include fastcgi_params;
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
答案2
IRC 上的 #silverstripe 中的 Wmk 提出了禁用 GZIP 的解决方案:
把这个放进去mysite/_config/config.yml
HtmlEditorField: use_gzip: false
然后用 刷新 Silverstripe 缓存?flush=all
。这样你就拿回了你的编辑器 :-)