2010-03-23 10 views
10

Io uso la seguente configurazione per nginx: http://gist.github.com/340956

Tuttavia, questa configurazione causa un errore di No input file specified con PHP. L'unico modo sono stato in grado di risolvere è alterando questa linea:

fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;

nota la "/" tra il $document_root e $fastcgi_script_name. Mi è stato comunicato che questa è la configurazione sbagliata, ma nessuno è stato in grado di dirmi esattamente perché la mia configurazione richiede questa barra in più.

Come posso sbarazzarmi di quella barra in più?

risposta

4

appena affrontato lo stesso problema (in installazione remi di nginx + php-fpm sul server RHEL6), si può risolvere con l'aggiunta di la seguente riga in/etc/nginx/fastcgi_params

fastcgi_param SCRIPT_FILENAME $request_filename; 

ho trovato questa riga mancante in RHEL, mentre è presente in una nginx Debian perfettamente funzionante.

0

Rimuovere try_files $uri index.php$uri; in linea 3.

+0

Quindi la mia riscrittura si interrompe, poiché ho URL come '/ foo/bar' che reindirizzano a 'index.php/foo/bar'. – shadowhand

0

questione di preferenze. Finché sei coerente, in entrambi i casi va bene.

Aggiungere la barra nel file di configurazione e assicurarsi che non vi siano ulteriori barre alla fine e inizio della radice del documento e del nome dello script rispettivamente o viceversa.

+0

Non lo compro. Sembra non fare alcuna differenza se aggiungo una barra finale a $ root o meno. – shadowhand

1

Il parametro PATH_TRANSLATED ottiene l'URI corretto? Penso che sia l'immediato concatenamento delle variabili nel file conf che non calcola. Quando si aggiunge una barra tra loro, forse sono interpretati correttamente.

Quando viene visualizzato l'errore No input file specified, controllare il registro per vedere quale URI è stato richiesto.

+0

Quale registro devo controllare quando viene visualizzato un errore "Nessun file specificato specificato"? i registri nginx non mostrano nulla, poiché l'errore viene attivato da PHP. – shadowhand

+0

Non c'è 'PATH_TRANSLATED' nel mio dump' $ _SERVER'. – shadowhand

+0

I log degli errori PHP non mostrano errori. – shadowhand

0

cosa succede quando si aggiunge in modo esplicito una direttiva radice in questo modo:

location ~ \.php$ { 
    # fastcgi_split_path_info ^(.+\.php)(.*)$; 
    include fastcgi.conf; 

    root /var/www/my_webroot; 

    fastcgi_pass 127.0.0.1:9000; 
    fastcgi_index index.php; 
} 
+0

Il mio '$ root' è definito in' server {...} 'è quello non buono abbastanza? – shadowhand