- PR -

PHP(imap_open)のコマンドラインとブラウザの挙動の違い

1
投稿者投稿内容
しるしる
常連さん
会議室デビュー日: 2005/10/25
投稿数: 24
投稿日時: 2008-07-11 10:56
皆様こんにちは。
以下の環境にてPHPスクリプトを作成しております。

OS: Solaris10 SPARC
Apache 2.2.8
PHP 5.2.6

IMAPにてメールを参照するために、以下のようなスクリプトを
作成しました。

<?php
var_dump($argv);

$uid = imap_open("{アドレス:143/imap/notls}","ユーザ名","パスワード");
if ($uid==false){
echo imap_last_error();
return ;
}

$headers = imap_headers($uid);
var_dump($headers);

imap_close($uid);

?>

これをコマンドラインから実行すると動作するのですが、ブラウザから
実行すると以下のようなエラーが出力されます。

Warning: imap_open() [function.imap-open]: Couldn't open stream {アドレス:143/imap/notls} in /usr/local/apache/htdocs/imaploader.php on line 4
Can't connect to アドレス,143: Error 0

Apache は以下のようにコンパイルしており、
./configure --prefix=/usr/local --disable-ipv6 --disable-ssl --with-mpm=worker --enable-rewrite --enable-so --with-ldap --enable-ldap --enable-authnz-ldap
PHP は以下のようにコンパイルしております。
./configure --prefix=/usr/local --with-config-file-path=/usr/local/lib/php --disable-ipv6 --with-iconv-dir=/usr/local --with-gettext=/usr/local/share/gettext --with-openssl=/usr/local --with-imap=/usr/local/c-client/imap-2006j --with-imap-ssl=/usr/local --with-zlib --with-apxs2=/usr/local/apache/bin/apxs --with-pgsql=/usr/local/pgsql --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysq/bin/mysql_config --enable-mbstring --enable-mbregex --with-ldap=/usr/local

また、インストールされた libphp5.so 中には imap_open 関数が含まれているようです。
% nm /usr/local/apache/modules/libphp5.so | grep imap_open
[22456] | 4432660| 4356|FUNC |GLOB |0 |13 |imap_open

尚、c-client のバージョンを 2004g や 2007b に変更しても結果は同じでした。
このような状況ですが、今後どのように問題を切り分ければ良いか、アドバイスを
頂けませんでしょうか。

どうぞよろしくお願いいたします。

[ メッセージ編集済み 編集者: しるしる 編集日時 2008-07-15 16:19 ]
マツ
会議室デビュー日: 2008/07/16
投稿数: 2
投稿日時: 2008-07-16 11:12
はじめまして
しるしる様

私も同様の現象で悩んでいます。
(これまで正常稼動していたものが、7月11日頃から動かなくなりました。
 現象がしるしる様の書き込みの内容とほぼ同じです。)
その後問題は解決されましたでしょうか?
しるしる
常連さん
会議室デビュー日: 2005/10/25
投稿数: 24
投稿日時: 2008-07-16 18:57
原因が判明しました。
こちらの環境では Apache を mpm=worker でコンパイルしており
ますが、これを mpm=prefork でコンパイルし直す事で imap_open
が動作致しました。

参考) http://bugs.php.net/bug.php?id=29465

以上、どうもありがとうございました。

# c-client を thread safe でコンパイルする方法等あれば
# コメントを頂けますと幸いです。

P.S.
未記入様、そちらの環境ではいかがでしょうか?
マツ
会議室デビュー日: 2008/07/16
投稿数: 2
投稿日時: 2008-07-17 20:02
しるしる様
未記入です。

ウチはまだ復旧していません。
ウチは元々mpm=preforkでコンパイルしているので、これが原因ではなさそうです。

ちなみに
これまで正常稼動していたのですが、突然、動かなくなりました。
コマンドラインからは動作するのに、ブラウザからは動作しない状況です。
(sendmail、ftp、geturlなど、別サーバーに対する処理がNG状態です)

しるしる様も、突然、動作しなくなったのですか?


# c-client を thread safe でコンパイルする方法等あれば
# コメントを頂けますと幸いです。
ごめんなさい。調べてみます。
1

スキルアップ/キャリアアップ(JOB@IT)