0

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リポジトリから使用しています

4

1 に答える 1

0

Apache が mod_chroot を使用していたことを忘れており、DNS を提供するライブラリへのアクセスがブロックされていたようです。このページLoadFile /lib64/libnss_dns.so.2のおかげで、httpd.confに追加する必要がありました。

于 2012-05-03T14:15:56.910 に答える