当我尝试运行imap
浏览器中使用的脚本时,它运行良好(它是从我网络上安装了扩展的 Ubuntu 14.04 服务器加载的)。但是,当我尝试在上述服务器上使用 PHP CLI 时,它无法加载imap
。
我编写了一个简单的脚本来检查已加载的扩展,使用它get_loaded_extensions()
,我学到了两件事:
- PHP CLI 有 50 个扩展,而通过我的 Web 浏览器运行它则有 51 个。
- 我在
apache2/php.ini
(imagick.so
) 中手动声明的另一个扩展正在 CLI 和浏览器中加载
为什么会发生这种情况?我怎样才能在 CLI 和浏览器中加载所有 51 个扩展?
答案1
通过 Apache 调用和通过 CLI 调用时,PHP 有单独的配置文件。
例如,至少在 Debian 中,这些分别在/etc/php5/apache2/php.ini
和中/etc/php5/cli/php.ini
。
您在 apache2/php.ini 中手动声明的事实imagick.so
可能并不意味着什么 - 大多数发行版都有其他方式来管理 PHP 模块,并且通常可以自动为您启用扩展,因此它可能已经被添加。
我建议查看你的 Linux 发行版如何管理 PHP 扩展(对于 Debian 和 Ubuntu,它使用一个名为的命令php5enmod
,需要通过来调用sudo
),或者只需手动编辑/etc/php5/cli/php.ini
或类似操作即可保持最新。