对 cli 的 php.ini 所做的更改未生效

对 cli 的 php.ini 所做的更改未生效

我有两个php.ini文件 -

  • /etc/php.ini在客户端的情况下加载
  • /opt/lampp/etc/php.ini在浏览器中加载。

我可以使用 PHP邮件解析extension=mailparse.so在添加行后/opt/lampp/etc/php.ini重新启动 lampp。

但是在命令行的情况下我无法加载相同的内容 -

获得PHP Fatal error: Call to undefined function mailparse_msg_create() in ...

mailparse_msg_create()是扩展的一部分Mailparse

我尝试在更改后重新以用户身份登录,甚至重新启动系统。需要做什么才能使更改生效。

更新

我检查了php -i | grep 'Configuration File' 一下

PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php/modules/mailparse.so' - /usr/lib/php/modules/mailparse.so: cannot open shared object file: No such file or directory in Unknown on line 0
Configuration File (php.ini) Path => /etc
Loaded Configuration File => /etc/php.ini

更新 2
我从 复制了 mailparse.so/opt/lampp/lib/php/extensions/no-debug-non-zts-20090626并将其放入/usr/lib/php/modules。我也将其添加extension=mailparse.so到。但它仍然显示此警告/etc/php.ini

PHP Warning:  PHP Startup: Unable to load dynamic library ...  

正如 Lekensteyn 所说,我确实

ldd /usr/lib/php/modules/mailparse.so

并得到

ldd: warning: you do not have execution permission for /usr/lib/php/modules/mailparse.so'

于是我授予了执行权限。然后

ldd /usr/lib/php/modules/mailparse.so

显示

linux-gate.so.1 => (0x00110000) libc.so.6 => /lib/libc.so.6 (0x0011d000) /lib/ld-linux.so.2 (0x003aa000)

看起来很正常。但是现在,运行php命令说

PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/modules/mailparse.so' - /usr/lib/php/modules/mailparse.so: undefined symbol: mbfl_name2no_encoding in Unknown on line 0

答案1

您是否已将扩展安装到 PHP 命令行版本所需的位置?

检查extension_dir您的 /etc/php.ini 以查看它期望在哪里找到扩展并在那里安装扩展或将其指向您的 lampp PHP 扩展目录(假设它是兼容版本的 PHP)。

答案2

两个 php.ini 都包含不同的extension_dir设置,/etc/php.ini似乎将其设置为/usr/lib/php/modules,而 LAMPP 将其设置为/opt/lampp/lib/php/extensions/no-debug-non-zts-20090626

要使 Mailparse 适用于 LAMPP,您需要将 mailparse.so 复制到/opt/lampp/lib/php/extensions/no-debug-non-zts-20090626并添加extension=mailparse.so/opt/lampp/etc/php.ini。由于 PHP 每次运行时都会加载 php.ini 文件,因此无需重新启动计算机。

相关内容