命令行中出现PHP imap_open()错误

命令行中出现PHP imap_open()错误,php,command-line,imap,Php,Command Line,Imap,我试图从命令行运行一个PHP页面,该页面使用imap_open()打开电子邮件收件箱。该脚本在浏览器中运行良好 PHP脚本: $imap_stream = imap_open($host,$username,$pass); 命令: php -c /etc/php.ini /home/public_html/inc/mailGet.php 错误: PHP Fatal error: Call to undefined function imap_open() in /home/publi

我试图从命令行运行一个PHP页面,该页面使用imap_open()打开电子邮件收件箱。该脚本在浏览器中运行良好

PHP脚本:

$imap_stream    = imap_open($host,$username,$pass);
命令:

php -c /etc/php.ini /home/public_html/inc/mailGet.php
错误:

PHP Fatal error:  Call to undefined function imap_open() in /home/public_html/inc/mailGet.php on line 13
我在命令中包含了正确的php.ini和
-c/etc/php.ini
,以确保它使用了与浏览器相同的.ini文件。(这是指向.ini的路径,如我的phpinfo()页中所述)

我正在用PHP5.2.6运行Apache2(Centos5.5)。有人能给我建议吗

谢谢,


Chris。

IMAP函数是一个扩展。根据,PHP需要使用
——使用imap[=DIR]
编译,而您的情况似乎不是这样

您的系统上可能有多个命令行
php
实例

最后,如果CLI PHP无法配备所需的功能,我想您可以在crontab中执行http请求:

wget http://localhost/path_to_script.php

我发现在使用CLI-php时,有时需要在php.ini中定义扩展。尝试将extension=imap.so添加到php.ini中,并将其包含在命令中(-c/etc/php.ini)

我必须通过添加extension=mysql.so为mysql做同样的事情


即使扩展将显示在phpinfo()中;它并不总是在CLI PHP中加载。

如果不指定ini文件,会发生什么?该错误表示未加载IMAP扩展。
php--ri-imap
给了你什么?@Aaron-Hi。php--ri imap生成“扩展名”imap“不存在”。如果没有指定ini文件,PHP错误将通过mysql_connect()函数出现在页面上方。这可能更适合在serverfault.com上投票迁移there@Pekka-我能够在浏览器中使用IMAP功能。这是否意味着PHP遵循IMAP函数?@Christopher可能是因为您的系统中有多个PHP二进制文件。你可以试着找出你的在哪里。如果将PHP配置为Apache模块,则可能根本没有启用IMAP的PHP二进制文件。@Pekka,我已将PHP二进制文件定位到/usr/local/bin/PHP。既然我在浏览器中使用的命令中声明了相同的.ini文件,为什么它会在浏览器中工作,而不是在命令行中工作?@Christopher我在这里不是专家,但据我所知,ini文件在*nix系统上是不够的:PHP二进制文件实际上需要使用所需的扩展名进行编译。只有在Windows上,才能通过更改php.ini随意启用/禁用扩展。如果@Aaron的--ri思想产生“notpresent”,那么您可能有一个二进制文件没有配备imap扩展。你需要找到一个是,或者如果不存在,recompile@Pekka-好的,这是有道理的。我如何知道命令行“/usr/local/bin/php”中指定的位置是否与浏览器使用的位置不同?@pagwil-I工作得非常好。还是不太清楚为什么没有它就不行?但是,它现在起作用了。非常感谢。