2009-06-24 12 views
2

Wir betreiben Nginx + FastCgi als Backend für unsere Drupal-Website. Alles scheint zu funktionieren, außer für diese eine URL. http: ///sites/all/modules/tinymce/tinymce/jscripts/tiny_mce/plugins/smimage/index.phpNginx - Behandelt PHP als Binärcode

(Wir verwenden TinyMCE-Modul in Drupal, und die URL oben aufgerufen wird, wenn Benutzer versucht, Lade ein Bild hoch)

Als wir Apache benutzten, lief alles gut. Allerdings behandelt Nginx das über URL Binary und versucht, es herunterzuladen. (Wir haben überprüft, dass die von der URL angegebene Datei eine gültige PHP-Datei ist)

Irgendeine Idee, was hier falsch sein könnte?

Ich denke, es hat etwas mit der NGINX-Konfiguration zu tun, aber nicht ganz sicher, was das ist.

Jede Hilfe wird sehr geschätzt.

Config: Hier ist der Ausschnitt aus der nginx Konfigurationsdatei:

 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

Haben Sie einschalten eAccelerator durch Zufall? Wenn ja, deaktiviere es und schau, ob das funktioniert. –

Antwort

2

Machen Sie es

location ~ \.php$ { 

statt

location ~ .php$ { 
+0

Das würde bedeuten, dass es auch Dateien wie "foophp",. bedeutet "irgendein Charakter", also entkommt es, um das "echte" zu bekommen. ist völlig in Ordnung hier. – cmende

0

Vielleicht ist die PHP-Datei ausgeführt wird, sondern eine binäre Datei zu erzeugen. Generiert dieses Skript ein Bild? Schwer zu sagen, ohne irgendeine Konfiguration zu sehen.

+0

Danke für die Antwort, Martin. Wir haben überprüft, dass PHP kein Bild generiert. Ich habe meinen Beitrag mit Config-Details aktualisiert. –

1

Wenn das tat es nicht, auch sicher sein, dass Sie fastcgi läuft auf Port 8888. Sie haben können überprüfen, ob mit:

Sie sind in Ordnung, wenn Sie eine Antwort erhalten wie:

tcp  0  0 localhost:9000   *:*      LISTEN 

Oder probieren Sie die folgenden und suchen Sie nach dem Port er hört auf:

netstat -la | grep LISTEN