LoginSignup
0
0

Apache php.iniでモジュールが読み込めない

Posted at

古い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は読み込まれていないことがわかる。
スクリーンショット 2023-12-03 12.00.12.png

設定ファイルは次の通り、/etc/php/7.4/apache2/php.ini
スクリーンショット 2023-12-03 12.02.29.png

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

参照
https://minory.org/php-warning-module.html

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0