Mail_Queueを使ってメール配信をするプログラムを定期的に稼働させています。しかし、いつからかメールが届かなくなりました。理由がよくわからないのですが、エラー内容を調べてもよくわかりません。。

下記のアラートも出るようになってしまいました。。これは、php.iniを編集すれば出なくなりました。

PHPで開発する際のおすすめ設定(display_errors)

Strict Standards: Declaration of Mail_Queue::isError() should be compatible with that of PEAR::isError() in /usr/share/pear/Mail/Queue.php on line 126
PHP Strict Standards:  Non-static method DB::connect() should not be called statically, assuming $this from incompatible context in /usr/share/pear/Mail/Queue/Container/db.php on line 130

また、Mail_Queueのバージョンが低いので、pear upgrade Mail_Queueをして更新しようと思いましたが、全く出来ません。出来るものと思って、事前にpear uninstall Mail_Queueをしちゃっておりまして、すぐに復旧させないと行けないのに、どこをどう調べても何をトライしても全く出来る気配がありません。。

で、pearの設定を色々といじっているうちに下記のエラーが出ました。

php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution

このメッセージはPHPがDNSを使って、名前解決しようとしたけど出来なかったときに出るエラーとのこと。

php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolutionの対応

で、解決方法はapache(webサーバ)を再起動するだけですって。。。そしたら、pear install Mail_Queueも出来ました。。で、ついでにバッチ処理でMail_Queueを動かしていてエラーだったものも、ちゃんと動くようになりました。

これは仮説ですが、年末に私が借りているホスティングスペースで勝手に?PHPがバージョンアップされてしまい、その際にapacheなどのサーバプロセスはそのままであったので、システム的に不整合が起きたのではないかと。

PHPはapacheにも組み込まれています。通常、PHPのバージョンアップをしたらPHPを使っているプロセスは再起動させます。それが出来ていなかっただけだと思います。

しかし、pear installも出来ないし、バッチから使っているPHPも挙動不審。いくらエラー内容をウェブでググっても見つからない。。。で、結局ウェブサーバの再起動で治ったという。。。ついでにサーバも再起動しておきましたが。。。

さすがに思いつかないですよね。。。apache再起動すれば、pearがちゃんと動くなんて。。。でも同じホスティングスペースを借りている人で、pearを使っている人は同じ現象に悩んでおられると思いますので、ここに書き留めておきました。ご参考まで。