您好我在kohana工作3.3.1。现在,当我尝试发送纯文本电子邮件时,我遇到了错误。确切的错误在下面给出
致命错误:main()[function.require]:无法打开所需的''(include_path ='。:/ usr / local / altphp / lib / php:/ home / gettrsm3 / public_html / web / application / .. /Utilities:/home/gettrsm3/public_html/web/application/../Utilities/PHPUnit')位于第449行的/home/gettrsm3/public_html/web/modules/Email/classes/Kohana/Email.php
Email.php代码(第448-450行)
// Load Swiftmailer
require Kohana::find_file('vendor/swiftmailer', 'lib/swift_required');
function swiftmailer_configurator() {...}
但是在swiftmailer目录下有lib / swift_required.php文件。 谁有任何想法?
答案 0 :(得分: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.