我有两个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文件,因此不需要重新启动计算机。