Ubuntu22からUbuntu24にアップデートしたところ、Apacheが起動しなくなりました。
とりあえず Apacheの起動、phpによるCGIの動作までできるように修正した経過を載せておきます。
●環境と状況
Ubuntu22.04からUbuntu24.04にアップデート後
Apacheを起動しようとすると次のエラーになっていました。
$ > apache2ctl start
apache2: Syntax error on line 146 of /etc/apache2/apache2.conf: Syntax error on line 3 of /etc/apache2/mods-enabled/php8.2.load: Cannot load /usr/lib/apache2/modules/libphp8.2.so into server: /usr/lib/apache2/modules/libphp8.2.so: cannot open shared object file: No such file or directory
●確認経過
①エラーログの確認
アップデートが影響していることは間違いないと思いますが、とりあえずエラーログを確認したところ、
/var/log/apache2/error.log
は存在するものの、ファイルサイズが0になっており、エラーは出力されていません。
エラーログすら吐けない状況にあると・・・(死んでいるのか
②apacheが入っているか確認
アップデートでApacheが入っていない世界線に飛ばされたのかと思い、バージョン確認
$ > apache2ctl -v | grep 'Server version'
Server version:Apache/2.4.58
Apacheが生き残っていることがわかりました。
Apacheのバージョンアップ漏れかと思い、アップデートを行いましたが、最新となっています。
③apache2.conf の構文エラー確認
apache2.confの146行目でphp8.2の読み込みに失敗しているのが原因のようなので、confファイルを開いて、「php」で検索をかけてみましたが、見つからない…
④apacheのconf周りを検索
php8.2.loadを確認したところ、古いphpを参照していました。
nano先生でコメントアウトして保存
$ > cat /etc/apache2/mods-enabled/php8.2.load
# Conflicts: php5
# Depends: mpm_prefork
LoadModule php_module /usr/lib/apache2/modules/libphp8.2.so
↓
# LoadModule php_module /usr/lib/apache2/modules/libphp8.2.so
⑤apacheの起動
久しぶりの起動
$ > sudo apache2ctl start
Invoking 'systemctl start cpache2'
無事に起動できました。
⑥/var/wwwの様子
ところが、これまで作成してきたHTMLにアクセスできない。
/var/www/ を確認したところ、
/var/www/html フォルダ以下のファイルが消えていました…(ウォイ!
バージョンアップって怖いですね。
バックアップしてるからいいですけど。
⑦phpファイルの実行確認
/var/www/html/ 以下に次のファイルを置いてphpの実行確認をしました。(パーミッションは755)
# ファイル名 info.php
<?php
var_dump( phpinfo() );
?>
ブラウザから呼び出すと、
このようになり、PHPが実行されていません。
先ほどPHPモジュールを切ったことを思い出し、次のように修正したところ動きました
$ > cat /etc/apache2/mods-enabled/php8.2.load
# Conflicts: php5
# Depends: mpm_prefork
# LoadModule php_module /usr/lib/apache2/modules/libphp8.2.so
↓(nano 先生を使いました)
LoadModule php_module /usr/lib/apache2/modules/libphp8.3.so
$ > sudo mv /etc/apache2/mods-enabled/php8.2.load /etc/apache2/mods-enabled/php8.3.load
$ > sudo mv /etc/apache2/mods-enabled/php8.2.conf /etc/apache2/mods-enabled/php8.3.conf
これで、PHPのCGIも動作するようになりました。
外部公開するときは、info.phpは必ず消してください。
アクセスログを見ると、結構な頻度でinfo.phpを探しています。