アップデートしたらphpで記述されたページがソースコードを表示してしまう。
静的なページやCGIには問題がない。
もし同様のトラブルで困った人が、Googleとかでたどりついたら、その人の為に結論だけ先に書いて挙げるのが親切だ。
#################
セキュリティアップデート 2013-003を実施すると/Library/Server/Web/Config/apache2のhttpd_server_app.confが更新されてphpで書いたファイルがソースコードを表示してしまう。
httpd_server_app.conf の#LoadModule php5_module modules/libphp5.soがコメントアウトされているので、#を削除して有効にする=moduleが使えるようにすれば良い。
#################
このサーバのOSはMountain Lion (10.8.4)Server なのだ。Apple が7月2日にセキュリティアップデートを発表した。学期末で忙しかったのでうっちゃっておいた。
7月25日(木)にアップデートを実施したのだ。でそのままなにもチェックしなかったのだが、29日(月)になってBlogに書き込む仕事ができて開いたら、php スクリプトがそのまま表示されている。php が動いていない訳だ。いや、動けるがapache2-php の連携ができていないのだ。これは、httpd.conf に;
LoadModule php5_module modules/libphp5.so
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
がコメントアウトされて(先頭に#がある)いるためだ。多分バージョンアップされたときhttpd.confが書き変わってしまったのだろう と高をくくっていたのだが…..
丸々2日、格闘した。現象が見つかった月曜日は解決できず、翌日は運がわるいことに医学のサーバがこけちゃったのと重なってしまったのだ。医学のサーバは業者に任せているとはいうものの、ユーザはそんなことはわからないから基盤室へクレームが来る。管理者には一般ユーザはクレームをよこさないが、ほんの一部のわがままおっさんが電話でどうなっていると問い合わせにくる。医学のサーバの原因はわかったのだが、サーバを再起動すると、あまりにもでかいHDをマネージしているもんで、再起動時にHDをチェックする操作に入り、10時間くらいかかってしまう。こっちのトラブルは管理者はなにもすることがないのでいいのだが、mikeの方は管理者が対応するしかない。
で、/etc/apach2/httpd.conf を見ると
LoadModule php5_module modules/libphp5.so はコメントアウトされており動くはず。
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
については;
/etc/apach2/httpd.conf に
Include /private/etc/apache2/other/*.conf
と書いてあり
/etc/apach2/other にphp5.conf というファイルがあり、このファイルに
<IfModule php5_module>
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
<fModule dir_module>
DirectoryIndex index.html index.php
</IfModule>
</IfModule>
とある(<>は全角で本来は半角英語)。問題ない。
そこで困ったわけだ。原因がわからない。
TimeMachine でいっそのことバージョンアップ前に戻しちゃえとおもったのだが、何故か、「復元」ボタンがアクティブにならない。FirstAid とかをやっているうちにアンマウントされてしまった。これは再度構築しないといけないようだ。だから復元できない。
さっさと気が付けばいいのだが、CarbonCopyCloner で別のHDにもバックアップしている。こいつは元のHDにあったファイルが変更されると、古いファイルを.CCC Archives としてバックアップ日時順に保存してある。
したがって、バージョンアップした直後の.CCC Archivesにあるファイルをみれば、バージョンアップで何が変更されたのかがわかる。で、見たらhttpd.conf もphp.ini も変更された形跡がない。
うーん、じゃなんだ?ということでググってみたりして、原因を探しまわったのだが、ほとんどのページは上記のコマンドのコメントをはずせというものばかりだ。
そんでもって、今日ようやく、もっと違う所のファイルが変更されたのではないかと気が付き、
/Library/Server/Web/Config/apache2
のhttpd_server_app.conf が.CCC Archives内のバージョンアップしたときの直後の日付のフォルダにあるではないか。だからこれが更新されたのだ。
で更新されたhttpd_server_app.confをみたら
#LoadModule php5_module modules/libphp5.so
となっているではないか。コメントアウトを解除(# を削除)してapache2を再起動して解決。
httpd.confのどっかにinclude… httpd_server-app.conf と書いてあるに違いないが直接は書いてない。どこにこのファイルを参照しろと書いてあるんだろ?
あー、アホだった。自分自身で書いてあるじゃん。
/Library/Server/web/config/apache2/ReadMe.txt によるとhttpd_server_app.conf は/etc/apache2/httpd.conf に取って代わるものとなっている。
このようなトラブルとかのためにサーバ構築の過程をメモしておいたのだが、このメモ=blog なわけで、blogが読めないと役にたたない。なんてこった。紙ベースのログが必要だな。
なんてことはない。webサーバを最初に作成したときに気が付いていたのだが、すっかり忘れているのだ。アホだな。学生に以前習ったろなんて言えなくなっちゃった。
で、このトラブルを解決している最中にCarbonCopyCloner からもうHDが満タンだから古いファイルを捨てるとかしろと言ってきた。とほほ…..
[ 約2年後の2015年6月 の追記 ]
また同じトラブルがあったよ。でこの記事が読めなくなって困った。全く反省していないのだ。
[ 約3年後の2016年5月 の追記 ]
また同じトラブルがあったよ。今回はブログを他に移転していたので、ふるいサーバの記事をみることができた。