imap_open()のエラー(phpバージョン違い)

詳しく原因まで追究できていないんだけど、誰かの役に立てばと思いアップ。


PHP 5.2.6 で動作していた imap_open() が、PHP 5.3.2 になると動かなくなった。
[code]
#!/usr/bin/php -q
#PHP 5.2.6 のサンプルコード
<?php
$mailserver = "example.com";
$mbox = imap_open("{".$mailserver.":110/pop3/notls}INBOX", "user@".$mailserver, "password", "OP_READONLY");
var_dump($mbox);
if ($mbox) {
imap_close($mbox);
}
?>
[/code]
PHP 5.2.6では、このコードはエラーなく動く。

PHP 5.3.2では、以下のエラーになる。
[code]
PHP Warning: imap_open() expects parameter 4 to be long, string given in …
[/code]
文字列(”OP_READONLY”)が整数(OP_READONLY)に変わったようだ。
ここを修正してもエラーになる。
[code]
PHP Warning: imap_open(): Couldn’t open stream {mail.example.com:110/pop3/notls}INBOX in …
bool(false)
PHP Notice: Unknown: Read-only POP3 access not available (errflg=2) in Unknown on line 0
[/code]
POP3のリードオンリーはダメみたいだ。

しかたがないので、pop3は使わず、imapにしたらうまくいった。
[code]
#!/usr/bin/php -q
#PHP 5.3.2 のサンプルコード
<?php
$mailserver = "example.com";
$mbox = imap_open("{".$mailserver.":143/imap/notls}INBOX", "user@".$mailserver, "password", OP_READONLY);
var_dump($mbox);
if ($mbox) {
imap_close($mbox);
}
?>
[/code]
pop3もimapもサポートしてるメールサーバじゃないとダメだけど、一応解決ということで。

0 返信

返信を残す

Want to join the discussion?
Feel free to contribute!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です