Nginx/FPM/PHP toate fișierele php spun ‘File not found.’ (Administrarea sistemului, Php, Nginx, Php Fpm)

Dl.Boon a intrebat.

tocmai am instalat nginx 1.1.13 și php 5.4.0 pe o mașină centos 5.8 final 64bit. Nginx și PHP/Fpm rulează și pot rula scripturi php prin linia de comandă ssh, dar în browser tot primesc erori ‘File not found.’ pe toate fișierele mele PHP.

Iată cum am pus nginx.conf să se ocupe de scripturile PHP:

      location ~ .php$
      {
              root                    /opt/nginx/html;
              fastcgi_pass            unix:/tmp/fpm.sock;
              fastcgi_index           index.php;
              fastcgi_param           SCRIPT_FILENAME /opt/nginx/html$fastcgi_script_name;
              include                 fastcgi_params;
      }

Acesta este un copy/paste direct de pe celelalte servere ale mele, unde funcționează bine cu această configurație (dar ele rulează versiuni mai vechi de php/fpm).

De ce primesc aceste erori?

Comentarii

  • Nu contează, s-a rezolvat. A fost o problemă prostească de permisiuni. –  > Por Dl.Boon.
5 răspunsuri
mingalevme

Puneți „include fastcgi_params;” înainte de toate liniile „fastcgi_param *”, „include fastcgi_params;” anulează toate liniile „fastcgi_param *” (vezi jurnalul de depanare nginx):

location ~ .php$ {
    root                    /opt/nginx/html;
    fastcgi_pass            unix:/tmp/fpm.sock;
    fastcgi_index           index.php;
    include                 fastcgi_params;
    fastcgi_param           SCRIPT_FILENAME /opt/nginx/html$fastcgi_script_name;
}

Comentarii

  • Omule, am pierdut 4 ore pe ea și răspunsul tău m-a ajutat. –  > Por expert.
  • Am încercat să depășesc această problemă încă de ieri. Răspunsul tău m-a ajutat foarte mult! Vă mulțumesc!!! –  > Por Kacper Kołodziej.
  • cum facem acest lucru fără a codifica în mod greșit calea ? $document_root vars pare să nu funcționeze ? –  > Por mahen3d.
miog

Am avut aceeași problemă.

Ceea ce am făcut pentru a o rezolva a fost să verific utilizatorul care rulează nginx, php-fpm și să verific permisiunile lor pentru accesarea folderului în care se află rădăcina. Acesta este fi implicit ‘www-data’.

dar puteți afla folosind ps aux | grep php-fpm și ps aux | grep nginx comenzi.

Trebuie să vă asigurați că dosarul este accesibil utilizatorului care rulează aceste procese.

Comentarii

  • Vă mulțumim pentru indiciu. Am încercat să îmi găzduiesc proiectele adânc în interiorul directorului meu Dropbox, care avea permisiuni 700 în mod implicit. Schimbarea permisiunilor Dropbox la 755 a rezolvat problema. –  > Por Rodion Baskakov.
Xosofox

Am avut aceeași problemă, iar pentru mine a fost vorba de o directivă „root” configurată greșit/inexistentă în configurația serverului nginx

Hangchen Yu

Folosesc o astfel de configurație, îmi doresc să vă ajute. Funcționează în OS X. În ceea ce mă privește, răspunsul lui @Xosofox ‘s a funcționat. Am tastat greșit versiunea de nginx 1.6.2 ca fiind 1.2.6, astfel încât rădăcina a devenit un director inexistent.

location ~ .php$ {
    fastcgi_intercept_errors on;
    root           /usr/local/Cellar/nginx/1.6.2/html;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    include        fastcgi_params;
    fastcgi_param  SCRIPT_FILENAME /usr/local/Cellar/nginx/1.6.2/html$fastcgi_script_name;
}

Pedro Vasconcelos

Am rezolvat această problemă schimbând user și group tho the current user:group în php-fpm.d/www.conf

În mod implicit, utilizatorul și grupul este ‘nginx’, schimbați acest lucru….

Sper că vă ajută