はじめに要約
Apacheの設定で、phpを実行する環境が指定されていなかったため、ブラウザでアクセスしたときだけエラーが出ていました。
httpd.confにphpの実行環境を設定したら解決しました。
事象が発生したサーバの環境
- Cent OS 7.6.1810
- Apache 2.4.6
ブラウザ経由でのアクセスの際、phpが403エラー
対象ファイルのパーミッションを変更して0775になっているのに、ブラウザでアクセスすると403エラーが出ます。
権限はちゃんとあるでしょうが!(# ゚Д゚)
/var/www配下でphpファイルを作成して/var/www配下でphpファイルを作成してパーミッションも確認し、
ターミナルから実行すると普通に動く。hello world出てくる。
いろいろ調べてみたところ、なぜかApacheの設定ファイルからphpの設定がすっぽり抜けていたことが原因と分かりました。
ファイルのパーミッション以前に、Apacheがphpを解釈できていないのが問題だということですね。
ApacheにPHPの実行環境を設定する
今回はmod_fcgidを利用するサーバーだったので、下記内容をhttpd.confに追記します。
<Directory />
Options FollowSymLinks ExecCGI
AddHandler fcgid-script .php
FCGIWrapper /usr/bin/php-cgi .php
</Directory>
FCGIWrapperに記述するパスは、サーバの環境ごとに異なる場合があります。
php-cgiがインストールされているパスを確認して記載してくださいね!
ほかの方の情報を見ていると、/local/bin/ とかになっているものもありますんで…。
ちなみに、以下のコマンドでインストール先のパスを確認できますよ。
which php-cgi
php-cgiが見つからない場合、そもそもmod_fcgidがインストールされていないと思われますので、
さきにインストールを行います。
設定は完了したので、あとはApacheを再起動して、変更が反映されたかを確認です。
ウチイダはphpinfo()で確認しました。
「Server API」の項目が「CGI/FastCGI」になっていれば、phpをfastCGIで実行してくれます。
ちなみに、初期設定はApacheのモジュールとして実行される「Apache 2.0 Handler」ってなってます。
モジュール実行とCGI実行の違い…は、また改めて勉強します。。。(;´・ω・)
参考にしたサイト
apache の FastCGI(mod_fcgid) で phpを動かしてみる
https://server-setting.info/centos/apache_fastcgi_fcgid_php.html
まとめ:サーバ設定は険しい…
公式リポジトリからインストールしてなにも変更していなければ、普通にphpが動くはずだと思っていたのでドハマりしました。。。
今回のサーバはPerlが動けばいいということで、phpの設定は特に気にしていなかったのです…
いつのまに設定変えちゃったんだろうなあ…
こういう時のために、設定ファイルのバックアップはきちんと取っておくべきだなあと実感しました。
設定項目一つとっても、気にしないといけない範囲が広いのでサーバエンジニアさんは大変だ。。。
ゆくゆくはその辺もカバーできるようにしていきたいなあと思いつつ、今日のところはここまで!
最後までお読みいただきありがとうございました(/・ω・)/
コメント