Perché i file PHP vengono scaricati invece di elaborati da Nginx?

Ho visto lo stesso problema e molte risoluzioni per indicare l'aggiunta del gestore di tipi, ma quello era per Apache.

Sto utilizzando Arch Linux, Nginx, PHP e PHP-FMP e non riesco a capire perché i file php stanno scaricando invece di eseguire.

  • Rendere Apache in grado di scrivere in file PHP con PHP in esecuzione come DSO?
  • Server LAMP protetto per l'utilizzo della produzione
  • nginx è in esecuzione ma non serve?
  • Come spiegare le richieste che apache attualmente sta eseguendo
  • Handler for (null) ha restituito il codice di risultato non valido 70007 / causando errore 500?
  • Come utilizzare fail2ban per analizzare il registro di accesso Nginx per contare gli indirizzi 404 e il ban IP?
  • Ecco il mio nginx.conf:

    #user http; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root html; index index.html index.htm index.php; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ \.php$ { try_files $uri =404; root html; fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} } # another virtual host using mix of IP-, name-, and port-based configuration # #server { # listen 8000; # listen somename:8080; # server_name somename alias another.alias; # location / { # root html; # index index.html index.htm; # } #} # HTTPS server # #server { # listen 443; # server_name localhost; # ssl on; # ssl_certificate cert.pem; # ssl_certificate_key cert.key; # ssl_session_timeout 5m; # ssl_protocols SSLv2 SSLv3 TLSv1; # ssl_ciphers HIGH:!aNULL:!MD5; # ssl_prefer_server_ciphers on; # location / { # root html; # index index.html index.htm; # } #} server { listen 80; server_name arch; access_log /srv/http/arch/logs/access.log; error_log /srv/http/arch/logs/error.log; location / { root /srv/http/arch/httpdocs; index index.html; } } } 

    Modifica per aggiungere il file mime.types:

     types { text/html html htm shtml; text/css css; text/xml xml; image/gif gif; image/jpeg jpeg jpg; application/x-javascript js; application/atom+xml atom; application/rss+xml rss; text/mathml mml; text/plain txt; text/vnd.sun.j2me.app-descriptor jad; text/vnd.wap.wml wml; text/x-component htc; image/png png; image/tiff tif tiff; image/vnd.wap.wbmp wbmp; image/x-icon ico; image/x-jng jng; image/x-ms-bmp bmp; image/svg+xml svg; application/java-archive jar war ear; application/mac-binhex40 hqx; application/msword doc; application/pdf pdf; application/postscript ps eps ai; application/rtf rtf; application/vnd.ms-excel xls; application/vnd.ms-powerpoint ppt; application/vnd.wap.wmlc wmlc; application/vnd.google-earth.kml+xml kml; application/vnd.google-earth.kmz kmz; application/x-7z-compressed 7z; application/x-cocoa cco; application/x-java-archive-diff jardiff; application/x-java-jnlp-file jnlp; application/x-makeself run; application/x-perl pl pm; application/x-pilot prc pdb; application/x-rar-compressed rar; application/x-redhat-package-manager rpm; application/x-sea sea; application/x-shockwave-flash swf; application/x-stuffit sit; application/x-tcl tcl tk; application/x-x509-ca-cert der pem crt; application/x-xpinstall xpi; application/xhtml+xml xhtml; application/zip zip; application/octet-stream bin exe dll; application/octet-stream deb; application/octet-stream dmg; application/octet-stream eot; application/octet-stream iso img; application/octet-stream msi msp msm; audio/midi mid midi kar; audio/mpeg mp3; audio/ogg ogg; audio/x-realaudio ra; video/3gpp 3gpp 3gp; video/mpeg mpeg mpg; video/quicktime mov; video/x-flv flv; video/x-mng mng; video/x-ms-asf asx asf; video/x-ms-wmv wmv; video/x-msvideo avi; } 

  • Nginx: utenti casuali "server non trovato"
  • Nginx: rigore della regola per la sottocartella
  • Cosa determina un limite pratico sul numero di blocchi di server nella configuration Nginx?
  • Proxy Nginx per back-end con l'authentication del certificato SSL client
  • direttiva sconosciuta "fastcgi_pass" su nginx
  • Old nginx sul server ubuntu?
  • 6 Solutions collect form web for “Perché i file PHP vengono scaricati invece di elaborati da Nginx?”

    Nota per aggiungere:

    Ho passato lo stesso affare, ma dopo aver applicato la correzione, l'ol 'ctrl + shift + r non era abbastanza buono per aggiornare la cache del browser che la pagina era un download –

    Dopo aver cancellato la cache più approfonditamente, ha funzionato come previsto.

    Ho potuto get questo problema fisso, ma il problema che mi sembrava fosse stato correlato al fatto che avevo ancora configurato Apache sul server, e una parte di Apache era in conflitto con la capacità di Nginx di server pagine di php, anche se Apache non era in esecuzione.

    Se si esegue lo stesso problema tentare di rimuovere Apache, PHP e tutti i moduli correlati e reinstallare ciò che ti serve.

    è questo file contiene qualcosa?

    (include mime.types;)

    perché se non così tutti i file ottenendo il mime / tipo di un file di download

    (tipo di default_type / octet-stream;)

    quindi questo è il tuo problema perché php non è nell'elenco

    soluzione: aggiungere questa row a quel file e riavviare ngnix

     text/php php php5; 

    Si noti che la configuration si distingue come inefficiente e potenzialmente insicura. Vedi https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/

    La mia posizione ~ .php sembra così. Perché non lo prova?

     location ~ \.php { try_files $uri =404; #This line closes a big security hole #see: http://forum.nginx.org/read.php?2,88845,page=3 fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param REQUEST_URI $request_uri; fastcgi_param DOCUMENT_URI $document_uri; fastcgi_param DOCUMENT_ROOT $document_root; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWARE nginx; fastcgi_param REMOTE_ADDR $remote_addr; fastcgi_param REMOTE_PORT $remote_port; fastcgi_param SERVER_ADDR $server_addr; fastcgi_param SERVER_PORT $server_port; fastcgi_param SERVER_NAME $server_name; fastcgi_pass 127.0.0.1:9000; } 

    Vai anche a /etc/php/php-fpm.conf e prova:

     listen = 127.0.0.1:9000 ;listen = /var/run/php-fpm/php-fpm.sock 

    Eseguire il seguente command:

     sudo apt-get install php-gettext sudo nano /etc/nginx/sites-available/default 

    Confronta il seguente codice con il file default :

     server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; root /usr/share/nginx/html; index index.php index.html index.htm; server_name localhost; location / { try_files $uri $uri/ =404; } error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } 
    • Remove cache dal browser
    • Riavvia Nginx

    sudo systemctl restart nginx

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.