いつもお世話になっております。
PEARのライブラリを書いたスクリプトを作成しています。
Mail_Mime
を使った箇所で、Class not found
となり、スクリプトがエラーで終了してしまいます。
本番環境でのみ上記現象が発生し、
なかなか原因がわからず困っている状態です...。
行った操作、確認済みの内容を以下に記載しますので、
どなたかヒント頂けないでしょうか?
よろしくお願いいたしますm(_ _ )m
確認した内容
- PEARライブラリは、composerを使ってインストールしている
- PEARライブラリは、スクリプトの先頭でautoload.phpをrequireして一括読み込みしている。
- 他のPEARライブラリの実行箇所は失敗しないので、requireに失敗しているということはなさそう。
- スクリプトは、githubにリポジトリをあげている。ローカルと本番環境の両方で以下動作を行ったところ、本番環境のみMail_Mimeを使った箇所で、Class not foundとなる(ローカルだとエラーにならない)。
- 任意のパスにcdして、スクリプトをgit cloneする
- composer installでライブラリを一括ダウンロード(composer.lockファイルを使ってバージョン固定)
- スクリプト実行
phpのバージョン
ローカル:PHP 5.5.31 (cli) (built: Jan 8 2016 08:33:30)
本番環境:PHP 5.5.30 (cli) (built: Oct 1 2015 09:29:18)
composer.jsonファイルの中身
{ "require-dev": { "pear/http_request2": "*", "pear/mail": "*", "pear/mail_mime": "*", "mustangostang/spyc": "*", "phpunit/phpunit": "*", "mockery/mockery": "*" } }
エラーが出ている箇所のソース
<?php /** * メールでKPI情報を通知する */ class MailMessageNotifier implements MessageNotifier { const DEFAULT_FROM_ADDRESS = "hogehoge@gmail.com"; const DEFAULT_HEAD_CHARSET = "UTF-8"; const DEFAULT_HTML_CHARSET = "UTF-8"; protected $from; protected $bodyParam; /** * @param array|null $params * @return void */ public function __construct($params = null){ $this->from = isset($params['from']) ? $params['from'] : self::DEFAULT_FROM_ADDRESS; $this->bodyParam = isset($params['bodyParam']) ? $params['bodyParam'] : array("head_charset" => self::DEFAULT_HEAD_CHARSET ,"html_charset" => self::DEFAULT_HTML_CHARSET); } /** * @param array $destInfoArray * @param array $messageInfoArray * @return void */ public function notifyMessage(array $destInfoArray,array $messageInfoArray){ foreach($destInfoArray as $eachDestInfo){ $this->sendMail( $eachDestInfo['address'], $messageInfoArray['subject'], $messageInfoArray['htmlMessage']); } } /** * @param string $to * @param string $subject * @param string $message */ public function sendMail($to, $subject, $message){ /** * 以下の箇所でMali_Mime使っているのですが、エラーになります。 * ついでに、同じPEARのMailクラスはエラーにならないみたいです...。 */ //必要なオブジェクトの構築 $mailObj = \Mail::factory("mail"); $mimeObj = new \Mail_Mime(PHP_EOL); //メール本文の構築 $mimeObj->setHtmlBody($message); $mailBody = $mimeObj->get($this->bodyParam); //メールヘッダの構築(件名はphp.iniの設定に依存せず、必ずUTF-8でエンコーディングする) $defaultEncoding = mb_internal_encoding(); mb_internal_encoding('UTF-8'); $mailHeader = $mimeObj->headers(array( "To" => $to, "From" => $this->from, "Subject" => \mb_encode_mimeheader($subject) )); mb_internal_encoding($defaultEncoding); //メールの送信 $mailObj->send($to,$mailHeader,$mailBody); } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/05/13 06:28