Nginx – 将PHP视为二进制文件

我们运行Nginx + FastCgi作为Drupal站点的后端。 一切似乎工作得很好,除了这一个url。 HTTP:///sites/all/modules/tinymce/tinymce/jscripts/tiny_mce/plugins/smimage/index.php

(我们在Drupal中使用TinyMCE模块,当用户尝试上传图片时,会调用上面的url)

当我们使用Apache时,一切正常。 然而,nginx对待上面的url二进制,并尝试下载它。 (我们已经validation了url指出的文件是一个有效的PHP文件)

任何想法在这里可能是错的?

我认为这是与NGINXconfiguration有关,但不完全确定是什么。

任何帮助是极大的赞赏。

configuration:这是nginxconfiguration文件的片段:

root /var/www/; index index.php; if (!-e $request_filename) { rewrite ^/(.*)$ /index.php?q=$1 last; } error_page 404 index.php; location ~* \.(engine|inc|info|install|module|profile|po|sh|.*sql|theme|tpl(\.php)?|xtmpl)$|^(code-style\.pl|Entries.*|Repository|Root|Tag|Template)$ { deny all; } location ~* ^.+\.(jpg|jpeg|gif|png|ico)$ { access_log off; expires 7d; } location ~* ^.+\.(css|js)$ { access_log off; expires 7d; } location ~ .php$ { include /etc/nginx/fcgi.conf; fastcgi_pass 127.0.0.1:8888; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; } location ~ /\.ht { deny all; } 

做了

 location ~ \.php$ { 

代替

 location ~ .php$ { 

如果没有这样做,也要确保你有fastcgi端口8888上运行。你可以检查:

 netstat -la | grep :8888 

你没关系,如果你得到如下回应:

 tcp 0 0 localhost:9000 *:* LISTEN 

或者尝试下面的内容并查找它正在侦听的端口:

 netstat -la | grep LISTEN 

也许PHP文件正在运行,但生成一个二进制文件。 这个脚本是生成一个图像? 很难说没有看到一些配置。