はじめに
PHPをインストールしてNginxの設定でCGIを実行できるようにすれば簡単にできると思っていましたが、実際にやってみると意外とハマったのでメモとして残しておきます。
PHPのインストール
以下のコマンドを実行します。
$ sudo yum -y install php
インストールできたかどうかを確認します。
$ php --version
📝 最新版のPHPをインストールしたい場合、あるいはプロジェクトごとに異なるバージョンのPHPを簡単に管理したい場合は、phpenvをおすすめします。phpenv利用したPHPのインストール手順については「phpenvで最新版のPHPをインストールしてWebサイトで使用する」を参考にしてください。
PHP-FPMのインストール
以下のコマンドを実行します。
$ sudo yum -y install php-fpm
Nginxのインストール
こちらの記事を参照してください。
CentOS 7 (5, 6) で "安定版 (最新版)" のNginxをインストールする方法
PHP-FPMの設定を変更
Apacheを使用する場合は特に変更することはありませんが、Nginxを使用する場合は設定ファイルの変更が必要です。/etc/php-fpm.d/www.conf内のuserとgroupをnginxに変更します。
- user = apache
- group = apache
+ user = nginx
+ group = nginx
設定したら、PHP-FPMを起動(再起動)します
$ sudo systemctl restart php-fpm
Nginxの設定を変更
Nginxの設定を変更してPHPを実行できるようにします。/etc/nginx/conf.d/default.conf を編集します。今回はホームディレクトリ以下に www というディレクトリを作り、その中にある index.php を実行できるようにします。
⚠️ 初期設定に戻せるように設定のバックアップを取りたい人はこのファイルを直接編集せずに、コピーして編集してください。コピー先ファイルは default.conf と同じディレクトリ、ファイル名は任意ですが、拡張子は .conf としてください。なお、今回は default.conf を直接編集することを前提として説明します。
- location / {
-     root   /usr/share/nginx/html;
-     index  index.html index.htm;
- }
+ location / {
+     root   /home/ユーザ名/www;
+     index  index.html index.htm index.php;
+ }
- #location ~ \.php$ {
- #    root           html;
- #    fastcgi_pass   127.0.0.1:9000;
- #    fastcgi_index  index.php;
- #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
- #    include        fastcgi_params;
- #}
+ location ~ \.php$ {
+     root           /home/ユーザ名/www;
+     fastcgi_pass   127.0.0.1:9000;
+     fastcgi_index  index.php;
+     fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
+     include        fastcgi_params;
+ }
ユーザ名のところに自分のユーザ名を入力してください。注意すべき点は、location ~ \.php$ ブロック内の root を location / の root と同じにすること、fastcgi_param のパスを上記のように変更することの2点です。
また、location /ブロックのindexにindex.phpを追加することを忘れずにしてください。なお、ここでいうindex.phpはファイルを省略した場合に参照するファイルなので、たとえばinfo.phpというファイルにアクセスしたい場合でもNginx設定ファイル内のindex.phpの部分は変更する必要はありません。
上記を設定に変更したらNginxを起動(再起動)します。
$ sudo systemctl restart nginx
PHPファイルを作成
PHPのファイルを作成します。ホームディレクトリにwwwディレクトリを作り、その中にindex.phpを作成します。
$ mkdir ~/www
$ vi ~/www/index.php
index.phpに以下を追加します。
<?php
  phpinfo();
?>
確認
ブラウザでhttp://ドメイン名/index.phpにアクセスして、PHPに関する情報が表示されたら成功です。お疲れさまでした。
403 Forbidden と表示されたとき
ホームディレクトリのパーミッションが正しいか確認してください。パーミッションを正しく設定するには以下を実行します。
$ chmod 755 /home/ユーザ名/