2017-04-09 3 views
0

少し前、私はメールが私のLaravelアプリケーションに送信すると、この奇妙なエラーを受信を開始し、エラーは次のとおりです。Laravelメーリングエラー

ErrorException in EsmtpTransport.php line 55: 
Argument 1 passed to Swift_Transport_EsmtpTransport::__construct() must implement interface Swift_Transport_IoBuffer, none given 

興味深いのは、私のメールシステムを約一年のためにうまく働いていることを、何も持っていません更新された(ちょうどサーバーとドメインが数週間前に再度支払われた)ので、私はコードが問題ではないと推定し、私はメール認証システムで情報を二重にチェックした。

私は例外スタックトレースを追って、Swift_SmtpTransport::__construct()にパラメータが右送信することがわかったが、そこSwift_EsmtpTransport::__construct()から

また、私は作曲のアップデート」で(すべての私のライブラリを更新しました(実際にはエラー示されている)パラメータなしで呼ばれています"コマンド)。私が間違っている可能性が何見当がつかない、およびオンライン役立ちます何かを見つけることができなかったので、任意のヘルプは素晴らしいものだ

現在のバージョンです:

  • 「laravel /フレームワーク」:「5.2 *」 // "composer.json"
  • "ではSwiftMailer /ではSwiftMailer" から: "〜5.1"(更新後v5.4.6)// "laravel /フレームワーク/ composer.json"

--- から ---
どこかに見つかりました友人が助けて(

var_dump(Swift_DependencyContainer::getInstance()->createDependenciesFor('transport.smtp')); 

そして、誰もが興味を持っているならば、私は答えを見つけたarray(0) { }

答えて

0

結果としてこれを得た。この時のローディング(依存性注入)問題のいくつかの種類があるので、私はこのコード行を実行します)。問題はPHPのバージョンと互換性がありません。明らかに、SwiftMailerライブラリは新しいバージョンのPHP(> 5.5.9、おそらくいくつかのバージョン、それが失敗し始めるバージョンが不明)で動作しません。

自動ロードの競合のために失敗しました。この問題の解決策は遅延ロードからプリロードに戻っていますが、応答時間が少し遅くなりますが、ほとんどの場合、気付かないことがあります(私の場合、パフォーマンスの低下は見られません)。

コンクリートソリューション:
は swift_requied.php/libに%APP%/ベンダー/ではSwiftMailer /ではSwiftMailer /を検索し、その差がSwift::registerAutoload('_swiftmailer_init');がコメント化されて、最後の行にある

<?php /* * This file is part of SwiftMailer. * (c) 2004-2009 Chris Corbyn * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /* * Autoloader and dependency injection initialization for Swift Mailer. */ if (class_exists('Swift', false)) { return; } // Load Swift utility class require __DIR__.'/classes/Swift.php'; if (!function_exists('_swiftmailer_init')) { function _swiftmailer_init() { require __DIR__.'/swift_init.php'; } } // Start the autoloader and lazy-load the init script to set up dependency injection // Swift::registerAutoload('_swiftmailer_init'); _swiftmailer_init(); 

次のようになりますし、それを変更します直接、_swiftmailer_initメソッドが呼び出されます。

私はこれを修正しようとして約2日間失ったので、これは誰かを助けてくれることを願っています。