Windows11 WSL2 Ubuntu アップグレード
Ubuntu 22.04.2 LTS アップグレード Apache2 復活
ここまでで WSL2 の Ubuntu 22.04 LTS を 24.04 LTS にアップグレードできました。
ただ Apache2 が動作しなくなりました。
アップグレード途中質問された時どんどん yes で進んだのがまずかったように思えたのですが違ったようです。
Apache2 で PHP を設定していると必然的に Apache2 がエラーになってしまうようです。
まずは状況を確認します。
PHP のバージョンを確認します。
yamada@yama:~$ php -v [結果] PHP 8.3.6 (cli) (built: Mar 19 2025 10:08:38) (NTS) Copyright (c) The PHP Group Zend Engine v4.3.6, Copyright (c) Zend Technologies with Zend OPcache v8.3.6, Copyright (c), by Zend Technologies
PHP バージョンは 8.3.6 となっていました。
Apache2 を start させてみます。
上手く start できません。
yamada@yama:~$ sudo service apache2 start [結果] Job for apache2.service failed because the control process exited with error code. See "systemctl status apache2.service" and "journalctl -xeu apache2.service" for details.
systemctl status apache2.service を見ると
yamada@yama:~$ systemctl status apache2.service × apache2.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/apache2.service; enabled; preset: enabled) Active: failed (Result: exit-code) since Sun 2025-06-08 18:37:13 JST; 54s ago Docs: https://httpd.apache.org/docs/2.4/ Process: 2586 ExecStart=/usr/sbin/apachectl start (code=exited, status=1/FAILURE) CPU: 10ms 6月 08 18:37:13 ysenba systemd[1]: Starting apache2.service - The Apache HTTP Server... 6月 08 18:37:13 ysenba apachectl[2588]: apache2: Syntax error on line 146 of /etc/apache2/apache2.conf: Syntax error on line 3 of /etc/apache2/mods-enabled/php8.1.load: Cannot load /usr/lib/apache2/modules/libphp8.1.so into server: /usr/lib/apache2/modules/libphp8.1.so: cannot open shared object file: No such file or directory 6月 08 18:37:13 ysenba systemd[1]: apache2.service: Control process exited, code=exited, status=1/FAILURE 6月 08 18:37:13 ysenba systemd[1]: apache2.service: Failed with result 'exit-code'. 6月 08 18:37:13 ysenba systemd[1]: Failed to start apache2.service - The Apache HTTP Server.
となっていました。
どうも
/etc/apache2/mods-enabled/php8.1.load
が読み込めなかったようです。
確認してみると
/usr/lib/apache2/modules/libphp8.1.so
は実在せず、
/usr/lib/apache2/modules/libphp8.3.so
がありました。
以上の状況から、Aapache2 が動かない原因は、
Aapache2 が旧の PHP 8.1 モジュールの有効化を実行しようとしてエラーになっている
のではないかと考えました。
ならば、
PHP8.1 モジュールの無効化 $ sudo a2dismod php8.1
を行い、
PHP8.3 モジュールの有効化 $ sudo a2enmod php8.3
を行えばよいはずです。
なお Apache2 では PHP バージョンごとのモジュールを用意し、
モジュールの有効/無効を切り替えることでバージョン指定するとされています。
Apache2 の復活対処
PHP8.1 モジュールの無効化を実行します。
yamada@yama:~$ sudo a2dismod php8.1 [結果] Module php8.1 disabled. To activate the new configuration, you need to run: systemctl restart apache2
引き続き、対処を実施後 PHP8.3 モジュールの有効化を実行します。
Apache2 PHP 利用復活
PHP タイムゾーン設定が php8.3 になって消えてしまいました。
復活させます。
タイムゾーンを日本時間にします。
端末画面から
yamada@ubuntu-18:~$ sudo nano /etc/php/8.3/apache2/php.ini
とし、↓ キ-を押していると下方向にスクロ-ルします。
一番下まで行くようなイメ-ジで探します。
;;;;;;;;;;;;;;;;;;;
; Module Settings ;
;;;;;;;;;;;;;;;;;;;
の下あたり、
[CLI Server]
の次
[Date]
の下
# 989行目:コメント解除しタイムゾーン設定
date.timezone = "Asia/Tokyo"
とします。
作成が終わったら
^o
Enter
^x
として保存、nano エディタを終了します。
ユーザーホームディレクトリでの PHP 利用
ユーザーホームディレクトリでの PHP 利用が可能になるようにします。
php8.3.conf の設定を変更します。
yamada@yama:~$ sudo nano /etc/apache2/mods-available/php8.3.conf
として PHP の構成ファイルの編集をします。
最後の方で php_admin_flag engine が Offになっているので、これを on にします。
yamada@yama:~$ sudo nano /etc/apache2/mods-available/php8.3.conf
[結果]
<IfModule mod_userdir.c>
<Directory /home/*/public_html>
php_admin_flag engine on
</Directory>
</IfModule>
修正が終わったら
^o
Enter
^x
として保存、nano エディタを終了します。
PHP8.3 モジュールの有効化
やっと PHP8.3 に切り代える準備ができました。
$ sudo a2enmod php8.3 を実行します。
yamada@yama:~$ sudo a2enmod php8.3 [結果] Considering dependency mpm_prefork for php8.3: Considering conflict mpm_event for mpm_prefork: Considering conflict mpm_worker for mpm_prefork: Module mpm_prefork already enabled Considering conflict php5 for php8.3: Enabling module php8.3. To activate the new configuration, you need to run: systemctl restart apache2 引き続き、 yamada@yama:~$ sudo systemctl restart apache2
とします。
これで、ユーザーホームディレクトリでの PHP 利用が復活します。
引き続き Apache2 PHP 利用復活確認をします。