[Linux]httpd と PHP の連携
公開日:2025-11-30
更新日:2025-11-30
更新日:2025-11-30
1. 概要
httpd と PHP を連携します。
2. Unixドメインソケットによる連携方法
2.1 php85-php.conf の修正
SetHandler で www.sock を指定します。
デフォルトは www.sock です。
/etc/httpd/conf.d/php85-php.conf
デフォルトは www.sock です。
/etc/httpd/conf.d/php85-php.conf
コード(抜粋)
<FilesMatch \.(php|phar)$>
SetHandler "proxy:unix:/var/opt/remi/php85/run/php-fpm/www.sock|fcgi://localhost"
</FilesMatch>2.2 php-fpm の www.conf の修正
/etc/php-fpm.d/www.conf
または
/etc/opt/remi/php85/php-fpm.d/www.conf(抜粋)
または
/etc/opt/remi/php85/php-fpm.d/www.conf(抜粋)
コード
user = apache
group = apache
listen = /var/opt/remi/php85/run/php-fpm/www.sock
listen.acl_users = apache2.3 php ファイルの作成
ドキュメントルートの確認
php ファイルの作成
/var/www/html/test.php
httpd と php-fpm を再起動します。
http://localhost:8080/test.php にアクセスして、phpinfo が表示されれば OK です。
コマンド
cat /etc/httpd/conf/httpd.conf | grep DocumentRoot
実行結果(抜粋)
DocumentRoot "/var/www/html"
Nginx と異なります。php ファイルの作成
/var/www/html/test.php
コード
<?php
phpinfo();
httpd と php-fpm を再起動します。
コマンド
sudo systemctl restart httpd
sudo systemctl restart php85-php-fpm
http://localhost:8080/test.php にアクセスして、phpinfo が表示されれば OK です。
3. TCP/IP のソケット通信による連携方法
3.1 php85-php.conf の修正
php85-php.conf は、httpd 配下にありますが、php をインストールした時に作成されます。
SetHandler で 127.0.0.1:9000 を指定します。
/etc/httpd/conf.d/php85-php.conf
SetHandler で 127.0.0.1:9000 を指定します。
/etc/httpd/conf.d/php85-php.conf
コード(抜粋)
<FilesMatch \.(php|phar)$>
SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>3.2 php-fpm の www.conf の修正
/etc/php-fpm.d/www.conf
または
/etc/opt/remi/php85/php-fpm.d/www.conf(抜粋)
httpd と php-fpm を再起動します。
次のコマンドを実行して、Apache と Nginx が外部のネットワークへ接続できるようにします。
http://localhost:8080/test.php にアクセスして、phpinfo が表示されれば OK です。
または
/etc/opt/remi/php85/php-fpm.d/www.conf(抜粋)
コード
user = apache
group = apache
listen = 127.0.0.1:9000
listen.acl_users = apache
httpd と php-fpm を再起動します。
コマンド
sudo systemctl restart httpd
sudo systemctl restart php85-php-fpm
次のコマンドを実行して、Apache と Nginx が外部のネットワークへ接続できるようにします。
コマンド
sudo setsebool -P httpd_can_network_connect 1
http://localhost:8080/test.php にアクセスして、phpinfo が表示されれば OK です。
3.3 参考
php-fpm の ポート番号を 9001 に変更して php-fpm を再起動したところ、SELinux で拒否されて起動できませんでした。
次のコマンドで、HTTP関連で使用可能なポートを表示します。
9000 は使用可能ですが、9001 は許可されていないようです。
また、8080 が http_cache_port_t(キャッシュサーバ用)として登録されているため、デフォルトでは httpd では使えないようです。
http_port_t に 9001 を追加するには、次のコマンドを実行します。
これで php-fpm を再起動すると、http://localhost:8080/test.php にアクセスできるようになります。
次のコマンドで、HTTP関連で使用可能なポートを表示します。
コマンド
sudo semanage port -l
sudo semanage port -l | grep -e "http_port_t" -e "http_cache_port_t"
実行結果
http_cache_port_t tcp 8080, 8118, 8123, 10001-10010
http_cache_port_t udp 3130
http_port_t tcp 80, 81, 443, 488, 8008, 8009, 8443, 9000
pegasus_http_port_t tcp 5988
9000 は使用可能ですが、9001 は許可されていないようです。
また、8080 が http_cache_port_t(キャッシュサーバ用)として登録されているため、デフォルトでは httpd では使えないようです。
http_port_t に 9001 を追加するには、次のコマンドを実行します。
コマンド
sudo semanage port -a -t http_port_t -p tcp 9001 # 追加
sudo semanage port -d -t http_port_t -p tcp 9001 # 削除
これで php-fpm を再起動すると、http://localhost:8080/test.php にアクセスできるようになります。

