Domanda

Stiamo eseguendo Nginx + FastCgi come backend per il nostro sito Drupal. Tutto sembra funzionare bene, tranne questo url. http: ///sites/all/modules/tinymce/tinymce/jscripts/tiny_mce/plugins/smimage/index.php

(Usiamo il modulo TinyMCE in Drupal e l'URL sopra è invocato quando l'utente tenta di caricare un'immagine)

Quando usavamo Apache, tutto funzionava bene. Tuttavia, nginx tratta quello sopra url Binary e cerca di scaricarlo. (Abbiamo verificato che il file indicato dall'URL è un file PHP valido)

Hai idea di cosa potrebbe esserci di sbagliato qui?

Penso che abbia a che fare con la configurazione di NGINX, ma non sono del tutto sicuro di cosa si tratti.

Qualsiasi aiuto è molto apprezzato.

Config: Ecco lo snippet dal file di configurazione di nginx:

      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;
       }
È stato utile?

Soluzione

Fallo

location ~ \.php$ {

anziché

location ~ .php$ {

Altri suggerimenti

In caso contrario, assicurati di avere FastCGI in esecuzione sulla porta 8888. Puoi verificarlo con:

netstat -la | grep :8888

Stai bene se ricevi una risposta come:

tcp        0      0 localhost:9000          *:*                     LISTEN

Oppure prova quanto segue e cerca su quale porta è in ascolto:

netstat -la | grep LISTEN

Forse il file php è in esecuzione ma genera un file binario. Questo script sta generando un'immagine? Difficile dirlo senza vedere alcune configurazioni.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top