que php nginx php-5.5

que - php fpm nginx



Nginx sirve archivos.php como descargas, en lugar de ejecutarlos (25)

Primero debes Remove cache en tu navegador

Luego abra la terminal y ejecute el siguiente comando:

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; } }

Luego agregue el siguiente código en el archivo default :

location ~ [^/]/.php(/|$) { fastcgi_split_path_info ^(.+/.php)(/.+)$; fastcgi_index index.php; fastcgi_pass unix:/var/run/php/php7.3-fpm.sock; include fastcgi_params; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; }

Si no coincide, solo corrija y reinicie Nginx desde la terminal con el siguiente comando

sudo systemctl restart nginx

Luego ve al navegador y disfruta ...

Estoy instalando un sitio web en una gota (Océano Digital). Tengo un problema para instalar NGINX con PHP correctamente. Hice un tutorial https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on-ubuntu-14-04 pero cuando intento ejecutar algunos .php solo lo está descargando ... por ejemplo ... http://5.101.99.123/info.php está funcionando pero ... Si voy al http://5.101.99.123 principal, está descargando mi índice. php: /

¿Alguna idea?

-rw-r--r-- 1 agitar_user www-data 418 Jul 31 18:27 index.php -rw-r--r-- 1 agitar_user www-data 21 Aug 31 11:20 info.php

Mi / etc / nginx / sites-available / default

server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; root /var/www/html; index index.html index.htm index.php; # Make site accessible from http://localhost/ server_name agitarycompartir.com; location ~ /.php$ { fastcgi_split_path_info ^(.+/.php)(/.+)$; # # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini # # # With php5-cgi alone: # fastcgi_pass 127.0.0.1:9000; # # With php5-fpm: fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; } location / { try_files $uri $uri/ =404; # Uncomment to enable naxsi on this location # include /etc/nginx/naxsi.rules }

... Otros "ubicación" están comentados (#)


Debe agregar esto a / etc / nginx / sites-enabled / default para ejecutar archivos php en el servidor Nginx:

server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; root /usr/share/nginx/html; index index.php index.html index.htm; 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; } }


En mi caso, no estaba usando /etc/nginx/sites-available/default Estaba usando un archivo de configuración de bloque de servidor diferente (por ejemplo, example.com), y la única forma en que pude solucionar este problema fue eliminando el servidor predeterminado enlace simbólico del archivo de configuración de bloque:

$ rm /etc/nginx/sites-enabled/default

luego recarga Nginx:

$ sudo systemctl reload nginx


Entonces, esto es lo que finalmente funcionó en mi caso como reescribir las reglas donde el culpable
Cambié las reglas de reescritura de nginx de la siguiente manera ...

location /vendors { rewrite ^/vendors/?$ /vendors.php last; }

se convierte en ...

location / { access_log off; log_not_found off; client_max_body_size 2000m; client_body_buffer_size 512k; proxy_buffering on; proxy_send_timeout 300s; proxy_read_timeout 300s; proxy_buffer_size 64k; proxy_buffers 32 64k; proxy_busy_buffers_size 128k; proxy_temp_file_write_size 128k; proxy_connect_timeout 300s; proxy_http_version 1.1; proxy_set_header Range ""; proxy_pass https://123.123.123.123:444; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_redirect off; }

Aparentemente, sin la última palabra clave, la solicitud no se reinició, por lo que nunca llegó al segmento de ubicación .php , y simplemente se interpretó como una descarga:


Estaba a punto de volverme loco tratando de arreglar esto, para mí el problema era que Cloudflare había almacenado en caché el archivo php y seguía haciéndome descargarlo.

La solución para mí fue purgar el caché en Cloudflare.


Esto funcionó para mí.

1) archivo MyApp

vi / etc / nginx / sites-available / myApp

server { listen 80; listen [::]:80; root /var/www/myApp; index index.php index.html index.htm; location ~ /.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+/.php)(/.+)$; fastcgi_pass unix:/run/php/php7.0-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }

Usuarios PHP5

Cambio

fastcgi_pass unix:/run/php/php7.0-fpm.sock;

a

fastcgi_pass unix:/var/run/php5-fpm.sock;

2) Configurar cgi.fix_pathinfo

Establezca cgi.fix_pathinfo en 0

Ubicación:

PHP5 /etc/php5/fpm/php.ini

PHP7 /etc/php/7.0/fpm/php.ini

3) Reiniciar servicios

FPM

php5 sudo service php5-fpm restart

php7 sudo service php7.0-fpm restart

NGINX

sudo service nginx restart


La respuesta anterior parecía comentar demasiado para la solución a la que llegué. Así es como se veía mi archivo:

/ etc / nginx / sites-available / default

location ~ /.php$ { # fastcgi_split_path_info ^(.+/.php)(/.+)$; # # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini # # # With php5-cgi alone: # fastcgi_pass 127.0.0.1:9000; # With php5-fpm: fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; }

Espero que esto ayude a algunas personas que están frustradas un domingo por la tarde (c:


Lo que funcionó para mí con Ubuntu 16.04, y php7 fue eliminar esta línea

fastcgi_split_path_info ^(.+/.php)(/.+)$;

Dejó de descargar archivos php después de eso.


Mi solución fue agregar

location ~ /.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+/.php)(/.+)$; fastcgi_pass unix:/run/php/php7.0-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params;

a mi archivo de configuración personalizado, por ejemplo, etc/nginx/sites-available/example.com.conf

Agregar a /etc/nginx/sites-available/default no funcionó para mí.


Para cualquiera que tenga el mismo problema con PHP 7, esto es lo que hice para que nginx ejecute los archivos php correctamente en CentOS 7, publicado aquí, así que en caso de que alguien tenga el mismo problema:

  • Siga paso a paso este documento sobre Digital Ocean .

  • Abra /etc/nginx/conf.d/default.conf (por defecto no tengo sitios habilitados ni sitios disponibles, puede editar en consecuencia).

  • Edite el parámetro de location siguiente manera:

default.conf :

location ~ /.php$ { try_files $uri =404; #fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; #instruct nginx execute php7 files instead download them :D fastcgi_pass unix:/var/run/php-fpm/www.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }

  • Reinicie los servicios Nginx y PHP sudo systemctl restart php-fpm y sudo systemctl restart nginx .

  • Por último, pero lo más importante, borrar la memoria caché del navegador o ejecutarse en modo incognito (Chrome) o Private Browsing (Firefox) etc.

Espero que esta útil y feliz codificación


Para mí fue la línea: fastcgi_pass unix: /var/run/php5-fpm.sock;

que tenía que ser solo: fastcgi_pass unix: /run/php5-fpm.sock;


Para mí, me ayudó agregar ?$query_string al final de /index.php, como a continuación:

location / { try_files $uri $uri/ /index.php?$query_string; }


Prueba esto:

  1. Editar /etc/nginx/sites-available/default

  2. Elimine el comentario de ambas líneas de escucha para que nginx escuche en el puerto 80 IPv4 e IPv6.

    listen 80; ## listen for ipv4; this line is default and implied listen [::]:80 default_server ipv6only=on; ## listen for ipv6

  3. Deje solo server_name

    # Make site accessible (...) server_name localhost;

  4. Agregue index.php a la línea de index

    root /usr/share/nginx/www; index index.php index.html index.htm;

  5. location ~ /.php$ {} comentarios location ~ /.php$ {}

    # pass the PHP scripts to FastCGI server listening on (...) # location ~ /.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+/.php)(/.+)$; # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini # With php5-cgi alone: #fastcgi_pass 127.0.0.1:9000; # With php5-fpm: fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; }

  6. Edite /etc/php5/fpm/php.ini y asegúrese de que cgi.fix_pathinfo esté establecido en 0

  7. Reinicie nginx y php5-fpm sudo service nginx restart && sudo service php5-fpm restart

Acabo de comenzar a usar Linux hace una semana, así que realmente espero ayudarte en esto. Estoy usando nano editor de texto para editar los archivos. ejecute apt-get install nano si no lo tiene. Google en él para saber más.


Resolví mi problema ahora con este código (cambie su IP):

server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; root /var/www/html; index index.php index.html index.htm; location ~ /.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.2-fpm.sock; } }


Si algo más no te ayuda. Y tal vez antes instaló apache2 con el archivo de prueba info.php. Simplemente borre los Datos de la aplicación (caché, cookie) para localhost.


Si alguna de las respuestas propuestas no funciona, intente esto:

1.fix www.conf en etc / php5 / fpm / pool.d:

listen = 127.0.0.1:9000;(delete all line contain listen= )

2.fix nginx.conf en usr / local / nginx / conf:

remove server block server{} (if exist) in block html{} because we use server{} in default (config file in etc/nginx/site-available) which was included in nginx.conf.

3. corrige el archivo predeterminado en etc / nginx / site-available

location ~ /.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi_params; }

4. reinicie el servicio nginx

sudo service nginx restart

5. reiniciar el servicio de php

servicio php5-fpm reiniciar

6 disfruta

Cree cualquier archivo php en / usr / share / nginx / html y ejecútelo en "server_name / file_name.php" (server_name depende de su configuración, normalmente es localhost, file_name.php es el nombre del archivo que se creó en / usr / share / nginx / html).

Estoy usando Ubuntu 14.04


Tuve el mismo problema y ninguna de las respuestas resolvió el problema.

Corrí:

sudo nginx -t

para probar el archivo de configuración en / etc / nginx / sites-available / default.

Me dio estos errores:

nginx: [emerg] unexpected end of file, expecting "}" in /etc/nginx/sites-enabled/default:115 nginx: configuration file /etc/nginx/nginx.conf test failed

Así que entré en el archivo de configuración y en la última línea había

#}

Descomenté, ejecuté el comando de prueba nuevamente y funcionó


Tuve el mismo problema, lo que resolvió fue que este bloque de servidor también tiene este bloque por encima de otros bloques de ubicación si tiene problemas de carga de CSS. Lo que agregué a mi archivo de conf de sitios disponibles.

location /vendors { rewrite ^/vendors/?$ /vendors.php break; }


Tuve un problema similar que se resolvió vaciando la memoria caché del navegador (también funcionó bien con un navegador diferente).


Veo muchas soluciones arriba y muchas funcionaron correctamente para mí, pero no entendí lo que estaban haciendo y me preocupaba simplemente copiar y pegar el código, específicamente fastcgi . Así que aquí están mis 2 centavos,

  1. nginx es un navegador web (y no un navegador de aplicaciones ) y, por lo tanto, solo puede servir páginas estáticas.
  2. cada vez que intentemos renderizar / devolver un archivo .php, por ejemplo index.php, nginx no sabe qué hacer, ya que simplemente no puede entender un archivo .php (o para el caso, cualquier extensión aparte de unos pocos seleccionados como .html, .js, etc., que son archivos estáticos)
  3. Por lo tanto, para ejecutar otros tipos de archivos, necesitamos algo que se encuentre entre nginx y la aplicación (aquí la aplicación php). Aquí es donde entra en juego la interfaz de puerta de enlace común (CGI). Es un software que gestiona esta comunicación. Los CGI se pueden implementar en cualquier lenguaje posible Python (uWSGI), PHP (FPM) e incluso C. FastCGI es básicamente una versión mejorada de CGI que es mucho más rápido que CGI.

Para algunos, servidores como Apache, hay soporte incorporado para interpretar PHP y, por lo tanto, no es necesario un CGI.

Este enlace digital del océano explica los pasos para instalar FPM bastante bien y no estoy escribiendo los pasos necesarios para resolver el problema de la descarga de archivos php en lugar de renderizar, ya que el otro responde en mi humilde opinión bastante bien.


compruebe que su extensión de archivo de configuración nginx es * .conf.
por ejemplo: /etc/nginx/conf.d/myfoo.conf

Tengo la misma situación. Después de cambiar el nombre de mi archivo de configuración de myfoo a myfoo.conf, se solucionó. No olvide reiniciar nginx después de cambiarle el nombre.


para un registro, descubrí que mi php-fpm no se estaba ejecutando y lo arreglé con el service php7.2-fpm stop


Actualice nginx config / etc / nginx / sites-available / default o su archivo de configuración

si estás usando php7 usa esto

location ~ /.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.0-fpm.sock; }

si estás usando php5 usa esto

location ~ /.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; }

Visite aquí para obtener detalles completos Detalle aquí


Descomente la ubicación .php en / etc / nginx / sites-available / default

sudo vi / etc / nginx / sites-available / default:

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


location ~ /.php$ { include snippets/fastcgi-php.conf; # With php5-cgi alone: # fastcgi_pass 127.0.0.1:9000; # With php5-fpm: fastcgi_pass unix:/var/run/php5-fpm.sock; }

Los fragmentos anteriores funcionaron para mí en caso de php7.2