2014-07-21 89 views
0

嗨,我在kohana 3.3.1工作。現在,當我嘗試發送純文本電子郵件時,我遇到了一個錯誤。下面無法打開需要''

Fatal error: main() [function.require]: Failed opening required '' (include_path='.:/usr/local/altphp/lib/php:/home/gettrsm3/public_html/web/application/../Utilities:/home/gettrsm3/public_html/web/application/../Utilities/PHPUnit') in /home/gettrsm3/public_html/web/modules/Email/classes/Kohana/Email.php on line 449

Email.php代碼(行448-450)

// Load Swiftmailer 
require Kohana::find_file('vendor/swiftmailer', 'lib/swift_required'); 

function swiftmailer_configurator() {...} 

但swiftmailer目錄下存在的lib/swift_required.php文件中給出確切的錯誤。 任何人有任何想法?

回答

0

Kohana::find_file是專門爲在Kohana「Cascading Filesystem」結構下查找文件而設計的。一般來說,這適用於Kohana應用程序本身的一部分文件。它不應該被用於vendor目錄,在那裏你總是已經知道文件的路徑是什麼。

相反,你應該這樣做:

require APPPATH . 'vendor/swiftmailer/lib/swift_required.php'; 

或者,如果vendor東西是一個模塊中:

require MODPATH . 'MODULE_NAME/vendor/swiftmailer/lib/swift_required.php'; 

爲了使第二個選項這裏更靈活一點,你可以定義一個新的常量在你的模塊的init.php這樣:

define('MODPATH_EMAIL', realpath(dirname(__FILE__)).DIRECTORY_SEPARATOR); 

然後喲你可以使用這一行:

require MODPATH_EMAIL . 'vendor/swiftmailer/lib/swift_required.php'; 

但是,最後(也是最好的選擇)是使用自動加載。如果您使用Composer在您的vendor目錄中安裝了Swiftmailer,那麼您可以這樣做:

require 'vendor/autoload.php'; // Prefix this with anything else as necessary.