打开所需的失败''

时间:2014-07-21 18:02:23

标签: php kohana

您好我在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文件。 谁有任何想法?

1 个答案:

答案 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.