Vagrantd(CentOS7)でnginx 2
先日は静的ファイル(index.html)を表示させたので、phpを動かそうと思ったが思いの外はまった。
今回は勉強用に試しているだけだったので適当なバージョンのPHPをインストール
sudo yum -y install epel-release wget http://rpms.famillecollet.com/enterprise/remi-release-7.rpm sudo rpm -ivh ./remi-release-7.rpm sudo yum install --enablerepo=epel,remi-php70 php php-mcrypt php-mbstring php-fpm php-mysqlnd php-opcache php-apcu
nginxの設定修正
sudo vim /etc/nginx/conf.d/default.conf
location ~ \.php$ { #root html; root /var/www; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; #fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name; include fastcgi_params; }
phpfpmの設定修正
sudo vim /etc/php-fpm.d/www.conf
;user = apache user = nginx ;group = apache group = nginx
# nginx と php-fpmを再起動し、設定を反映 sudo systemctl restart nginx sudo systemctl restart php-fpm
/var/www/配下にindex.phpを作成
<?php phpinfo();
http://192.168.33.10/index.php を叩くとphpinfoの画面でなく、index.phpファイルがダウンロードされる。
ここで原因がわからずはまる
実施したこと
* nginxのログファイルの権限を変える
* index.phpの権限を変える
* selinuxのチェック
* /etc/nginx/conf.d/default.conf , /etc/php-fpm.d/www.confの設定ファイルのチェック
(設定の誤り以外にもシンタックスエラーに一度気づかなかったのでチェックしておくこと
sudo systemctl status php-fpm.service (sudoをつけると詳細にエラーをだしくてれるっぽい)
nginx -t (こちらはsudo つけると正しく動くのにつけないとエラー出るケースが有ったのでつけないほうがいいかもしれない*権限系のエラー?よくわかっていない)
シンタックスエラーの状態で起動しようとすると結構分かりづらいエラーが表示されるので気をつけていたほうがよさそう
- choromeで見ていた場合キャッシュで反映されない場合があるようなので別のブラウザなどで試す
- nginxのerror.logを見る
原因としては先日書いた
/etc/nginx/nginx.confの設定のserverディレクティブが悪さをしていた(こいつをコメントアウトすればindex.phpが表示された)。
# server { # listen 80; # server_name test.example.com; # root /var/www/; # # location / { # } # # }
無意識にあとから書いたディレクティブが上書きするものと思っていた。
nginx.confが最初に読み込まれる設定ファイル。これが他の設定ファイルを読み込む
include /etc/nginx/conf.d/*.conf;
新しい設定追記するときは
conf.d/default.confに追記するのが正しい。
以下のコマンドを叩くとincludeされたファイルを展開して設定ファイルの内容を1本の設定ファイルとして表示できる
sudo nginx -T
参考
PHP - nginxサーバへphpファイルにアクセスするとダウンロードされてしまう|teratail
Vagrant + CentOS7 + nginx + PHP7 + php-fpm でFuelPHP1.8の仮想開発環境を構築する | 空想ブログ
[Sy] 【解決した】HomebrewでNginx + php-fpmの環境を作ろうとしたらPHPファイルがダウンロードされる | Syntax Error.