Nginx는 .php 파일을 실행하는 대신 다운로드로 제공합니다
이 시나리오에서 Nginx는 .php 파일을 잘못 처리하여 파일을 다운로드하는 대신 다운로드합니다. 그들을 실행합니다. 이 문제를 해결하려면 특정 구성을 조정해야 합니다.
1. Listen Line 주석 해제:
Nginx가 IPv4 및 IPv6 포트 80을 모두 수신할 수 있도록 /etc/nginx/sites-available/default를 수정합니다.
listen 80; ## listen for ipv4; listen [::]:80 default_server ipv6only=on; ## listen for ipv6
2 . 서버 이름 설정:
server_name이 실제 서버 이름을 반영하는지 확인하세요(예: server_name example.com;.
3. 인덱스 줄에 index.php 추가:
루트 지시문에서 인덱스 파일 목록에 index.php를 추가합니다:
root /var/www/html; index index.php index.html index.htm;
4. PHP 위치 블록 주석 해제:
php 처리를 활성화하려면 위치 ~ .php$ {} 블록의 주석 처리를 해제합니다:
location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+?\.php)(/.+)?$; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; }
5. php.ini에서 Pathinfo 수정 비활성화:
/etc/php5/fpm/php.ini를 편집하고 cgi.fix_pathinfo = 0으로 설정합니다.
6. Nginx 및 PHP-FPM 다시 시작:
Nginx 및 PHP-FPM 다시 시작:
sudo service nginx restart && sudo service php5-fpm restart
수정된 구성:
server { listen 80; listen [::]:80 default_server ipv6only=on; root /var/www/html; index index.php index.html index.htm; # Make site accessible from http://example.com/ server_name example.com; location ~ \.php$ { try_files $uri $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; } location / { try_files $uri $uri/ =404; # Uncomment to enable naxsi on this location # include /etc/nginx/naxsi.rules }
이러한 변경 사항을 구현한 후 Nginx는 .php 파일을 올바르게 실행해야 합니다.
위 내용은 Nginx가 .php 파일을 실행하는 대신 다운로드하는 이유는 무엇이며 어떻게 해결할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!