对cli的php.ini所做的更改不起作用

我有两个php.ini文件 –

  • /etc/php.ini加载在cli的情况下
  • 浏览器加载的/opt/lampp/etc/php.ini

在/opt/lampp/etc/php.ini中添加行extension=mailparse.so /opt/lampp/etc/php.ini并重新启动lampp后,我可以使用PHP的Mailparse扩展。

但是,我不能加载相同的命令行的情况下 –

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

mailparse_msg_create()是Mailparse扩展的一部分。

我做了改变,甚至重新启动系统后,用户重新logging。 需要做什么才能使变更生效。

更新

我检查了这个php -i | grep 'Configuration File' 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
我从/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 

你有没有安装扩展到您的命令行版本的PHP期望它?

检查/etc/php.ini中的extension_dir以查看它希望在哪里find扩展名,并在那里安装扩展名,或者将它指向lampp PHP扩展目录(假设它是PHP的兼容版本)。

两个php.ini包含不同的extension_dir设置,/ /etc/php.ini /usr/lib/php/modules 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文件,因此不需要重新启动计算机。