在 Apache 中,php.ini 文件无法加载模块
在EC2(Ubuntu)的Apache服务器上安装旧版的PHP7.4并进行设置。
由于经常需要查找相同的信息,所以做下备忘录。
环境:
-
- 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.
解决方案 (jiě jué àn)
使用 `phpinfo()` 函数来查找配置文件(/etc/php/7.4/apache2/php.ini),并改变模块的加载方式。
;extension=bz2
extension=curl.so ← curlではなく、curl.soで記述する
以下是在发生错误时的备忘录
在Apache中配置旧版的PHP
为了激活Apache2上的php7.4,我会粗暴地配置php,因为我只使用PHP7.4。
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目录下。
<?php
phpinfo(INFO_MODULES);
?>
为什么 php.ini 中的curl被启用了,但它却没有被加载呢?
;extension=bz2
extension=curl
;extension=ffi
当我检查 CLI的php.ini文件时,谜团得以解开。
; configuration for php curl module
; priority=20
extension=curl.so ← .soをつけないといけない
重新启动Apache后问题顺利解决。
sudo apache2ctl restart
请参考https://minory.org/php-warning-module.html。