물방울 (Digital Ocean)에 웹 사이트를 설치하고 있습니다. PHP로 NGINX를 올바르게 설치하는 데 문제가 있습니다. 나는 https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on-ubuntu-14-04 튜토리얼을 했지만 일부를 실행하려고 할 때 .php 파일 그냥 다운로드 중입니다 … 예를 들어 … http://5.101.99.123/info.php
작동하지만 … 메인으로 이동하면 http://5.101.99.123
내 index.php를 다운로드합니다 : /
어떤 생각?
-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
내 / 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
}
… 기타 “위치”는 주석 처리됩니다 (#)
답변
이 시도:
-
편집하다
/etc/nginx/sites-available/default
-
포트 80 IPv4 및 IPv6에서 nginx가 청취하도록 두 청취 라인의 주석을 해제하십시오.
listen 80; ## listen for ipv4; this line is default and implied listen [::]:80 default_server ipv6only=on; ## listen for ipv6
-
두고
server_name
혼자# Make site accessible (...) server_name localhost;
-
추가
index.php
받는index
라인root /usr/share/nginx/www; index index.php index.html index.htm;
-
주석 해제
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; }
-
편집
/etc/php5/fpm/php.ini
하고 다음cgi.fix_pathinfo
으로 설정되어 있는지 확인하십시오0
-
nginx 및 php5-fpm을 다시 시작하십시오.
sudo service nginx restart && sudo service php5-fpm restart
저는 일주일 전에 리눅스를 사용하기 시작했습니다. 나노 텍스트 편집기를 사용하여 파일을 편집하고 있습니다. apt-get install nano가 없으면 실행하십시오. 그것에 대한 Google은 더 알고 있습니다.
답변
Nginx 서버에서 PHP 파일을 실행하려면 이것을 / etc / nginx / sites-enabled / default에 추가해야합니다 :
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;
}
}
답변
브라우저 캐시 를 비워서 비슷한 문제가 발생 했습니다 (다른 브라우저에서도 잘 작동했습니다).
답변
nginx 설정 / etc / nginx / sites-available / default 또는 설정 파일 업데이트
php7을 사용하는 경우 이것을 사용하십시오
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
php5를 사용하는 경우 이것을 사용하십시오
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
자세한 내용은 여기를 참조하십시오.
답변
위의 많은 솔루션을 보았고 많은 솔루션이 올바르게 작동했지만 코드를 붙여 넣기, 특히 fastcgi 붙여 넣기가 걱정되었습니다 . 여기 2 센트가 있습니다.
- nginx는 웹 서버 ( 응용 프로그램 서버 아님)이므로 정적 페이지 만 제공 할 수 있습니다.
- nginx는 .php 파일을 이해할 수 없기 때문에 .php 파일 ( 예 : index.php)을 렌더링 / 반환하려고 할 때마다 무엇을 해야할지 모르겠습니다. 같은 .html 중에서,은 .js 등 정적 파일있는)
- 따라서 다른 종류의 파일을 실행하려면 nginx와 응용 프로그램 (여기서는 PHP 응용 프로그램) 사이에있는 것이 필요합니다. 여기에는 CGI (Common Gateway Interface)가 사용됩니다.이 통신을 관리하는 소프트웨어입니다. CGI는 가능한 모든 언어 파이썬 (uWSGI), PHP (FPM) 및 심지어 C로 구현 될 수 있습니다. FastCGI는 기본적으로 CGI보다 훨씬 빠른 업그레이드 된 버전의 CGI입니다.
Apache와 같은 일부 서버의 경우 PHP를 해석하기위한 지원 기능이 내장되어 있으므로 CGI가 필요하지 않습니다.
이 디지털 오션 링크 는 FPM을 설치하는 단계를 잘 설명하고 있으며 다른 답변이 IMHO이기 때문에 렌더링 대신 PHP 파일이 다운로드되는 문제를 해결하는 데 필요한 단계를 작성하지 않았습니다.
답변
나는 같은 문제를 겪었고 아무런 대답도 문제를 해결하지 못했습니다.
나는 달렸다 :
sudo nginx -t
/ etc / nginx / sites-available / default에서 구성 파일을 테스트합니다.
그것은 나에게 이러한 오류를 주었다 :
nginx: [emerg] unexpected end of file, expecting "}" in /etc/nginx/sites-enabled/default:115
nginx: configuration file /etc/nginx/nginx.conf test failed
그래서 설정 파일로 갔고 마지막 줄에는
#}
주석 처리를 제거하고 테스트 명령을 다시 실행했는데 작동했습니다.
답변
이것은 나를 위해 일했습니다.
1) 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;
}
}
PHP5 사용자
변화
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
에
fastcgi_pass unix:/var/run/php5-fpm.sock;
2) cgi.fix_pathinfo 구성
cgi.fix_pathinfo를 0으로 설정하십시오.
위치:
PHP5 /etc/php5/fpm/php.ini
PHP7 /etc/php/7.0/fpm/php.ini
3) 서비스 재시작
FPM
php5 sudo service php5-fpm restart
php7 sudo service php7.0-fpm restart
NGINX
sudo service nginx restart