古いPHP7.4をEC2(Ubuntu)のApacheにインストールした際の設定。
定期的に同じことを調べそうなのでメモ
環境:
- 22.04.1-Ubuntu
- PHP 7.4.33 (cli) (built: Sep 2 2023 08:03:46) ( NTS )
- Apache/2.4.52 (Ubuntu)
遭遇したエラー
EC-CUBE4のインストール時に以下のエラーが発生した。
Required PHP module 'curl' is not enabled. Please check server configuration.
Required PHP module 'xml' is not enabled. Please check server configuration.
Required PHP module 'zip' is not enabled. Please check server configuration.
Required PHP module 'mbstring' is not enabled. Please check server configuration.
解決方法
phpinfo()で設定ファイル(/etc/php/7.4/apache2/php.ini)を探し、モジュールのロード方法を変更する。
/etc/php/7.4/apache2/php.ini
;extension=bz2
extension=curl.so ← curlではなく、curl.soで記述する
以下、エラーが発生した際の備忘録
Apacheで古いPHPの設定
Apache2でphp7.4の有効化 & PHP7.4以外は使わないので乱暴にphpを設定していく。
sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install -y php7.4
sudo mv /usr/bin/php7.4 /usr/bin/php
sudo a2enmod php7.4
以下のファイルでApacheで読み込まれているモジュールを確認する。これはinfo.php等の名前をつけて/var/www/html配下に置く。
info.php
<?php
phpinfo(INFO_MODULES);
?>
https://<サーバのIP>/info.phpにアクセスした結果
↓curlは読み込まれていないことがわかる。
設定ファイルは次の通り、/etc/php/7.4/apache2/php.ini
php.iniでcurlは有効化している。なぜ読み込まれていないのだろう
/etc/php/7.4/apache2/php.ini
;extension=bz2
extension=curl
;extension=ffi
CLIのphp.iniを確認すると謎が解けた。
/etc/php/7.4/cli/conf.d/20-curl.ini
; configuration for php curl module
; priority=20
extension=curl.so ← .soをつけないといけない
Apacheを再起動して無事解決。
sudo apache2ctl restart