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