アップデート後にApacheを起動させる

サーバ

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を探しています。