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 a la página principal http://5.101.99.123
, está descargando mi index.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 (#)
Respuestas:
Prueba esto:
Editar
/etc/nginx/sites-available/default
Elimine el comentario de ambas líneas de escucha para que nginx escuche en el puerto 80 IPv4 e IPv6.
Dejar
server_name
soloAgregar
index.php
a laindex
líneaDescomentar
location ~ \.php$ {}
Edite
/etc/php5/fpm/php.ini
y asegúrese de quecgi.fix_pathinfo
esté configurado en0
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 el editor de texto nano para editar los archivos. ejecute apt-get install nano si no lo tiene. Google en él para saber más.
fuente
service nginx restart && service php5-fpm restart
nginx -s reload
unix:/var/run/php5-fpm.sock;
convertir aunix:/var/run/php/php7.2-fpm.sock;
(una anidación más/php
)Debe agregar esto a / etc / nginx / sites-enabled / default para ejecutar archivos php en el servidor Nginx:
fuente
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
php7.0-fpm.pid
y nophp7.0-fpm.sock
en/var/run/php/
qué significa eso?sudo service php7.0-fpm restart
. Si falta un calcetín, indica que se está ejecutando el proceso php./etc/nginx/conf.d/wordpress_https.conf
Tuve un problema similar que se resolvió vaciando la memoria caché del navegador (también funcionó bien con un navegador diferente).
fuente
Actualice nginx config / etc / nginx / sites-available / default o su archivo de configuración
si estás usando php7 usa esto
si estás usando php5 usa esto
Visite aquí para obtener detalles completos Detalle aquí
fuente
include snippets/fastcgi-php.conf;
?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,
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.
fuente
Tuve el mismo problema y ninguna de las respuestas resolvió el problema.
Corrí:
para probar el archivo de configuración en / etc / nginx / sites-available / default.
Me dio estos errores:
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ó
fuente
Esto funcionó para mí.
1) archivo MyApp
vi / etc / nginx / sites-available / myApp
Usuarios PHP5
Cambio
a
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
fuente
Para mí, ayudó agregar
?$query_string
al final de /index.php, como a continuación:fuente
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. arregle 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
5. reiniciar el servicio de php
6 disfruta
Estoy usando Ubuntu 14.04
fuente
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
Espero que esto ayude a algunas personas que están frustradas un domingo por la tarde (c:
fuente
Los fragmentos anteriores funcionaron para mí en caso de php7.2
fuente
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 el
/etc/nginx/conf.d/default.conf
(por defecto no tengo sitios habilitados ni sitios disponibles, puede editar en consecuencia).Edite el
location
parámetro de la siguiente manera:default.conf :
Reinicie los servicios de Nginx y PHP
sudo systemctl restart php-fpm
ysudo systemctl restart nginx
.Por último, pero lo más importante, borrar la memoria caché del navegador o ejecutar
incognito (Chrome)
oPrivate Browsing (Firefox)
etc.Espero que esta codificación útil y feliz
fuente
Mi solución fue agregar
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í.fuente
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, ejemplo.com), y la única forma en que pude solucionar este problema fue eliminando el enlace simbólico del archivo de configuración de bloque de servidor predeterminado:luego recarga Nginx:
fuente
Resolví mi problema ahora con este código (cambie su IP):
fuente
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.
fuente
Descomente la ubicación .php en / etc / nginx / sites-available / default
fuente
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.
fuente
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.
fuente
Luego abra la terminal y ejecute el siguiente comando:
Luego agregue el siguiente código en el
default
archivo:Si no coincide, solo corrija y reinicie Nginx desde la terminal con el siguiente comando
Luego ve al navegador y disfruta ...
fuente
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;
fuente
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.
fuente
Había tenido 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.
fuente
Así que esto es lo que finalmente funcionó en mi caso como reglas de reescritura donde el culpable
cambié las reglas de reescritura de nginx de la siguiente manera ...
se convierte en ...
Aparentemente, sin la última palabra clave, la solicitud no se reinició, por lo que nunca llegó al
.php
segmento de ubicación y simplemente se interpretó como una descarga:fuente
para un registro, descubrí que mi php-fpm no se estaba ejecutando y lo arreglé con
service php7.2-fpm stop
fuente
Una cosa más para verificar: si configuró el acceso HTTPS antes de configurar PHP (usé certbot), deberá realizar los cambios en / etc / nginx / sites-available / default dos veces porque habrá dos bloques de servidor (uno escucha en el puerto 80 y otro escucha en el puerto 443).
(Estaba configurando este servidor principalmente para correo electrónico y no tenía ningún uso para PHP cuando instalé nginx por primera vez solo como una forma de ejecutar certbot más fácilmente).
fuente