2009-07-08 103 views
1

我们的一个电子邮件解析脚本使用IMAP功能有一个问题:已启用IMAP,但函数未定义?

Fatal error: Call to undefined function imap_open()

IMAP肯定是启用,它是用PHP编写,并在的phpinfo显示出来()时并执行get_loaded_extensions()extension_loaded("imap")是否有任何为什么这些功能可能无法访问?

IMAP版本是2007e,PHP是5.3。

编辑1:这是运行在Mac服务器(OSX 10.5.7)使用imap函数的脚本在/ var/*** /我试图把一个测试文件放在/ Library/WebServer/Document Web根)使用imap_open与完全相同的细节,它似乎工作。

PHP更新之前它的设置方式 - 是否有任何理由停止工作?我知道我可能将电子邮件脚本移动到网络服务器文件目录,但我也想知道为什么它会停止工作的方式以前 - 它可能是PHP的配置方式?

+0

什么是var_dump(get_extension_funcs('imap')); ? – VolkerK 2009-07-08 09:11:47

+0

帖子太长,但它显示数组中的所有imap函数(71)。 (包括imap_open) – Tjkoopa 2009-07-08 09:41:45

回答

3

随着

echo get_cfg_var('cfg_file_path'); 

你可以找出哪些php.ini中已经使用了PHP的这个实例。您可能会看到php apache-module(或者是php-cgi?)和php cli版本(由您的cronjob使用)正在使用不同的.ini文件。
根据你如何安装php(以及如何编译这个版本的php),apache模块也可能解析你的cli版本没有的额外的.ini文件。要检查是否是这个在你的服务器上运行

<?php phpinfo(); ?> 

的情况下,查找条目“解析的附加.ini文件”。
无论如何,您必须注意cli版本使用的配置包含extension = php_imap ...指令。