Estou instalando um site em uma gota (Digital Ocean). Tenho um problema para instalar o NGINX com PHP corretamente. Eu fiz um tutorial https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on-ubuntu-14-04, mas quando tento executar alguns O arquivo .php está apenas baixando ... por exemplo ... http://5.101.99.123/info.php
está funcionando, mas ... Se eu for o principal http://5.101.99.123
, está baixando o meu index.php: /
Qualquer ideia?
-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
Meu / 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
}
... Outros "local" são comentados (#)
Respostas:
Tente o seguinte:
Editar
/etc/nginx/sites-available/default
Remova o comentário das duas linhas de escuta para que o nginx escute na porta 80 IPv4 e IPv6.
Deixe em
server_name
pazAdicionar
index.php
àindex
linhaDescomentar
location ~ \.php$ {}
Edite
/etc/php5/fpm/php.ini
e verifique secgi.fix_pathinfo
está definido como0
Reinicie o nginx e o php5-fpm
sudo service nginx restart && sudo service php5-fpm restart
Acabei de começar a usar o Linux há uma semana, por isso realmente espero ajudá-lo nisso. Estou usando o editor de texto nano para editar os arquivos. execute o apt-get install nano se você não o tiver. Google para saber mais.
fonte
service nginx restart && service php5-fpm restart
nginx -s reload
unix:/var/run/php5-fpm.sock;
converter paraunix:/var/run/php/php7.2-fpm.sock;
(mais uma nidificação/php
)Você precisa adicionar isso a / etc / nginx / sites-enabled / default para executar arquivos php no Nginx Server:
fonte
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
php7.0-fpm.pid
e não estáphp7.0-fpm.sock
no/var/run/php/
que isso significa?sudo service php7.0-fpm restart
. se faltar meia, indica que o processo php está sendo executado./etc/nginx/conf.d/wordpress_https.conf
Eu tive um problema semelhante que foi resolvido esvaziando o cache do navegador (também funcionou bem com outro navegador).
fonte
Atualize nginx config / etc / nginx / sites-available / default ou seu arquivo de configuração
Se você estiver usando o php7, use este
Se você estiver usando o php5, use este
Visite aqui para detalhes completos Detalhe aqui
fonte
include snippets/fastcgi-php.conf;
?Vejo muitas soluções acima e muitas funcionaram corretamente para mim, mas não entendi o que estavam fazendo e estava preocupado em apenas copiar e colar o código, especificamente, fastcgi . Então, aqui estão meus 2 centavos,
Para alguns servidores como o Apache, existe suporte embutido para interpretar o PHP e, portanto, não é necessário um CGI.
Este link digital do oceano explica as etapas para instalar o FPM muito bem e não estou escrevendo as etapas necessárias para resolver o problema de arquivos php sendo baixados em vez de renderizados, pois as outras respostas são muito boas.
fonte
Eu tive o mesmo problema e nenhuma das respostas resolveu o problema.
Eu corri:
para testar o arquivo de configuração em / etc / nginx / sites-available / default.
Isso me deu os seguintes erros:
Então eu entrei no arquivo de configuração e na última linha havia
Descomentei, executei o comando test novamente e funcionou
fonte
Isso funcionou para mim.
1) arquivo MyApp
vi / etc / nginx / sites-available / myApp
Usuários PHP5
mudança
para
2) Configure cgi.fix_pathinfo
Defina cgi.fix_pathinfo como 0
Localização:
PHP5 /etc/php5/fpm/php.ini
PHP7 /etc/php/7.0/fpm/php.ini
3) Reiniciar serviços
FPM
php5
sudo service php5-fpm restart
php7
sudo service php7.0-fpm restart
NGINX
fonte
Para mim, ajudou a adicionar
?$query_string
no final do /index.php, como abaixo:fonte
Se alguma das respostas propostas não estiver funcionando, tente o seguinte:
1.fix www.conf em etc / php5 / fpm / pool.d:
listen = 127.0.0.1:9000;(delete all line contain listen= )
2.fix nginx.conf em 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. corrija o arquivo padrão em etc / nginx / site-available
location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi_params; }
4.restart serviço nginx
5.restart serviço php
6.enjoy
Estou usando o Ubuntu 14.04
fonte
A resposta acima parecia comentar demais a solução que cheguei. É assim que meu arquivo era:
/ etc / nginx / sites-available / default
Espero que isso ajude algumas pessoas frustradas em uma tarde de domingo (c:
fonte
Os trechos acima funcionaram para mim no caso do php7.2
fonte
Para qualquer um que tenha o mesmo problema com o PHP 7, foi o que fiz para fazer o nginx executar arquivos php corretamente no CentOS 7, publicados aqui.
Siga passo a passo este documento no Digital Ocean .
Abra o
/etc/nginx/conf.d/default.conf
(por padrão, não tenho sites ativados nem sites disponíveis, você pode editar em conformidade).Edite o
location
parâmetro como abaixo:default.conf :
Reinicie os serviços Nginx e PHP
sudo systemctl restart php-fpm
esudo systemctl restart nginx
.Por último, mas mais importante, limpe o cache do navegador ou execute
incognito (Chrome)
ouPrivate Browsing (Firefox)
etc ...Espero que esta codificação útil e feliz
fonte
Minha solução foi adicionar
ao meu arquivo de configuração personalizado, por exemplo
etc/nginx/sites-available/example.com.conf
Adicionando a
/etc/nginx/sites-available/default
não funcionou para mim.fonte
No meu caso, não estava usando
/etc/nginx/sites-available/default
, estava usando um arquivo de configuração de bloco de servidor diferente (por exemplo, example.com), e a única maneira de solucionar esse problema é removendo o link simbólico do arquivo de configuração de bloco de servidor padrão:recarregando o Nginx:
fonte
Resolvi meu problema agora com este código (altere seu IP):
fonte
O que funcionou para mim no Ubuntu 16.04 e o php7 estava excluindo esta linha
fastcgi_split_path_info ^(.+\.php)(/.+)$;
Parou de baixar arquivos php depois disso.
fonte
Remova o comentário da localização .php em / etc / nginx / sites-available / default
fonte
Se algo mais não ajudar você. E talvez antes você tenha instalado o apache2 com o arquivo de teste info.php. Limpe os dados do aplicativo (cache, cookie) para o host local.
fonte
verifique se a extensão do seu arquivo nginx config é * .conf.
por exemplo: /etc/nginx/conf.d/myfoo.conf
Eu tenho a mesma situação. Depois de renomear o meu arquivo de configuração de myfoo para myfoo.conf, ele foi corrigido. Não se esqueça de reiniciar o nginx após renomeá-lo.
fonte
Em seguida, abra o terminal e execute o seguinte comando:
Em seguida, adicione o seguinte código no
default
arquivo:Se houver alguma incompatibilidade, basta corrigir e reiniciar o Nginx a partir do terminal, usando o seguinte comando
Em seguida, vá ao navegador e aproveite ...
fonte
Para mim, era a linha: fastcgi_pass unix: /var/run/php5-fpm.sock;
que tinha que ser apenas: fastcgi_pass unix: /run/php5-fpm.sock;
fonte
Eu estava prestes a enlouquecer tentando corrigir isso, para mim o problema era que o Cloudflare havia armazenado em cache o arquivo php e continuava me fazendo fazer o download.
A solução para mim foi limpar o cache no Cloudflare.
fonte
Eu estava tendo o mesmo problema que resolveu esse bloco de servidor e também esse bloco acima de outros blocos de localização, se você tiver problemas de carregamento de css. Que eu adicionei ao meu arquivo conf disponível nos sites.
fonte
Então é isso que finalmente funcionou no meu caso como reescrever regras em que o culpado que
eu mudei as regras de reescrita nginx da seguinte maneira ..
torna-se...
Aparentemente, sem a última palavra-chave, a solicitação não foi reiniciada, por isso nunca atingiu o
.php
segmento de local e foi simplesmente interpretada como um download -fonte
para um registro, descobri que meu php-fpm não estava em execução e o corrigi com
service php7.2-fpm stop
fonte
Mais uma coisa a verificar: se você configurou o acesso HTTPS antes de configurar o PHP - usei o certbot - será necessário fazer as alterações em / etc / nginx / sites-available / default duas vezes, pois haverá duas blocos de servidor (um atendendo na porta 80 e outro atendendo na porta 443).
(Eu estava configurando este servidor principalmente para email e não tinha uso do PHP quando instalei o nginx pela primeira vez, como uma maneira de executar o certbot com mais facilidade.)
fonte