Nginx は .php ファイルを実行する代わりにダウンロードとして提供します
このシナリオでは、Nginx は .php ファイルを誤って処理し、ファイルをダウンロードするのではなくダウンロードします。それらを実行しています。この問題を修正するには、特定の構成調整を行う必要があります。
1. Listen Lines:
のコメントを解除して、Nginx が IPv4 と IPv6 の両方のポート 80 で listen できるように /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 Location ブロックのコメントを解除します:
location ~ .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 Fix を無効にします:
/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 中国語 Web サイトの他の関連記事を参照してください。