2009-06-24 157 views
2

我們運行Nginx + FastCgi作爲Drupal站點的後端。 一切似乎工作得很好,除了這一個網址。 HTTP:///sites/all/modules/tinymce/tinymce/jscripts/tiny_mce/plugins/smimage/index.phpNginx - 將PHP視爲二進制文件

(我們使用TinyMCE的模塊在Drupal,當 用戶嘗試上面的網址被調用上傳圖片)

當我們使用Apache時,一切正常。 但是,nginx會將上面的url二進制文件對待並嘗試下載它。 (我們已經驗證了url指出的文件是一個有效的PHP文件)

任何想法這裏有什麼可能是錯誤的?

我認爲這與NGINX配置有關,但不完全確定它是什麼。

任何幫助是極大的讚賞。

配置: 下面是nginx的配置文件中的代碼片段:也許php文件正在運行,但生成的二進制文件

 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; 
     } 
+0

你任何機會打開eAccelerator在?如果是禁用它,看看是否有效。 – 2011-01-01 00:48:32

回答

2

使它

location ~ \.php$ { 

代替

location ~ .php$ { 
+0

這意味着它也會匹配「foophp」等文件。意味着「任何角色」,所以逃避它以獲得「真實」。這裏完全沒問題。 – cmende 2011-07-19 13:09:44

0

。該腳本是否生成圖像?很難說沒有看到一些配置。

+0

感謝您的迴應,馬丁。 我們已驗證PHP不會生成圖像。 我更新了我的文章,配置詳細信息。 – 2009-06-26 22:30:35

1

如果沒有做到這一點,還請確保您有FastCGI的端口上運行8888,您可以檢查有:

netstat -la | grep :8888 

如果您得到如下回復,您還可以:

tcp  0  0 localhost:9000   *:*      LISTEN 

或者嘗試以下,並尋找哪個端口正在偵聽:

netstat -la | grep LISTEN