CentOS5.8でPHP5.3.10を使用しています。PHPは、次の構成でソースから構築されています。
./configure --enable-gd-native-ttf --enable-mbstring \
--enable-sockets --with-bz2 --with-curl --with-gd --with-mcrypt \
--with-mysql --with-mhash --with-mysqli --with-openssl --with-pdo-mysql \
--with-pear --with-pcre-regex --with-xsl --with-zlib --with-libdir=/lib64 \
--with-imap --with-kerberos --with-imap-ssl --with-apxs2=/usr/sbin/apxs
システム上に他のバージョンのPHPがないことを確信しており、ブラウザーとCLIを介して、imap拡張機能が使用可能であることを確認しました。
この問題は、使用しているCMSに影響を及ぼしていますが、テストするために、次のような単純なPHPスクリプトを使用しました。
<?php
error_reporting(15);
$username = "username";
$password = "password";
$mailserver = "{pop.gmail.com:995/pop3/ssl/novalidate-cert}INBOX";
$link = imap_open($mailserver, $username, $password, NULL, 1);
print_r(imap_errors());
$headers = imap_headers($link);
print_r($headers);
?>
コマンドラインでこれを実行すると、エラーメッセージがなく、受信ボックス内のメッセージのリストである期待される出力が得られます。
ブラウザでテストスクリプトを指定すると、次のようになります。
Warning: imap_open() [function.imap-open]: Couldn't open stream {pop.gmail.com:995/pop3/ssl/novalidate-cert}INBOX in test.php on line 9
Array ( [0] => No such host as pop.gmail.com )
その後、imap_headersが失敗したときに追加の警告が表示されます。
明らかに、imap拡張機能はApacheとCLIを介して利用できます。これは、CLIから機能するため、ファイアウォールやDNSの問題ではありません。メールサーバーにtelnetで接続することもできます。
デフォルトのphp.ini-developmentファイル(コピーはこちら)を使用しており、phpinfo()とphp -iを使用して、両方の環境で使用されていることを確認しました。
imap_openがApacheを介して「...のようなホストはありません」と返されるが、コマンドラインでは返されない理由を誰かが知っていますか?
編集:
私はlibc-clientとlibc-client-develバージョン2004g-2.2.1とhttpd2.2.3-63.el5.centos.1をストックCentOSyumリポジトリから使用しています