Php Kohana 3.1-系统不加载电子邮件模块
我在使用Kohana 3.1时遇到问题。我添加了旧的banks kohana电子邮件模块,但结果是出现如下错误:Php Kohana 3.1-系统不加载电子邮件模块,php,email,kohana,kohana-3,mailer,Php,Email,Kohana,Kohana 3,Mailer,我在使用Kohana 3.1时遇到问题。我添加了旧的banks kohana电子邮件模块,但结果是出现如下错误: Kohana::modules(array( 'user' => MODPATH.'user', // Useradmin module 'auth' => MODPATH.'auth', // Basic authentication // 'cache' => MODPATH.'cache',
Kohana::modules(array(
'user' => MODPATH.'user', // Useradmin module
'auth' => MODPATH.'auth', // Basic authentication
// 'cache' => MODPATH.'cache', // Caching with multiple backends
// 'codebench' => MODPATH.'codebench', // Benchmarking tool
'database' => MODPATH.'database', // Database access
// 'image' => MODPATH.'image', // Image manipulation
'orm' => MODPATH.'orm', // Object Relationship Mapping
'kohana-email' => MODPATH.'kohana-email', // Kohana email module
//'email' => MODPATH.'email', // Email module
//'mailer' => MODPATH.'mailer', // Mailer module
'pagination' => MODPATH.'pagination', // Pagination module
'testmod' => MODPATH.'testmod',
// 'unittest' => MODPATH.'unittest', // Unit testing
// 'userguide' => MODPATH.'userguide', // User guide and API documentation
));
<?php
die('It works');
?>
modules (as echo MODPATH says)
|
+-- user (files from user module, this module works right)
|
+-- auth (files from auth module, this module works right)
|
+-- testmod (init.php file from testmod, this module works right)
|
+-- kohana-email
! |
: +-- classes
: | |
: | +-- email.php <--- The Email class is here!
: |
: +-- config
: | |
: | +-- email.php
: |
: +-- vendor
· |
· +-- swift
!
: (files from swift)
·
ErrorException[致命错误]:找不到类“电子邮件”
我的应用程序bootstrap.php文件如下所示:
Kohana::modules(array(
'user' => MODPATH.'user', // Useradmin module
'auth' => MODPATH.'auth', // Basic authentication
// 'cache' => MODPATH.'cache', // Caching with multiple backends
// 'codebench' => MODPATH.'codebench', // Benchmarking tool
'database' => MODPATH.'database', // Database access
// 'image' => MODPATH.'image', // Image manipulation
'orm' => MODPATH.'orm', // Object Relationship Mapping
'kohana-email' => MODPATH.'kohana-email', // Kohana email module
//'email' => MODPATH.'email', // Email module
//'mailer' => MODPATH.'mailer', // Mailer module
'pagination' => MODPATH.'pagination', // Pagination module
'testmod' => MODPATH.'testmod',
// 'unittest' => MODPATH.'unittest', // Unit testing
// 'userguide' => MODPATH.'userguide', // User guide and API documentation
));
<?php
die('It works');
?>
modules (as echo MODPATH says)
|
+-- user (files from user module, this module works right)
|
+-- auth (files from auth module, this module works right)
|
+-- testmod (init.php file from testmod, this module works right)
|
+-- kohana-email
! |
: +-- classes
: | |
: | +-- email.php <--- The Email class is here!
: |
: +-- config
: | |
: | +-- email.php
: |
: +-- vendor
· |
· +-- swift
!
: (files from swift)
·
如你所见,我尝试了另一个电子邮件模块(mailer模块和shadowhand的电子邮件模块),得到了相同的结果
考虑到错误消息,我仅使用init.php文件创建了一个模块(名为testmod),如下所示:
Kohana::modules(array(
'user' => MODPATH.'user', // Useradmin module
'auth' => MODPATH.'auth', // Basic authentication
// 'cache' => MODPATH.'cache', // Caching with multiple backends
// 'codebench' => MODPATH.'codebench', // Benchmarking tool
'database' => MODPATH.'database', // Database access
// 'image' => MODPATH.'image', // Image manipulation
'orm' => MODPATH.'orm', // Object Relationship Mapping
'kohana-email' => MODPATH.'kohana-email', // Kohana email module
//'email' => MODPATH.'email', // Email module
//'mailer' => MODPATH.'mailer', // Mailer module
'pagination' => MODPATH.'pagination', // Pagination module
'testmod' => MODPATH.'testmod',
// 'unittest' => MODPATH.'unittest', // Unit testing
// 'userguide' => MODPATH.'userguide', // User guide and API documentation
));
<?php
die('It works');
?>
modules (as echo MODPATH says)
|
+-- user (files from user module, this module works right)
|
+-- auth (files from auth module, this module works right)
|
+-- testmod (init.php file from testmod, this module works right)
|
+-- kohana-email
! |
: +-- classes
: | |
: | +-- email.php <--- The Email class is here!
: |
: +-- config
: | |
: | +-- email.php
: |
: +-- vendor
· |
· +-- swift
!
: (files from swift)
·
是的,我用Email::connect()探测它在同一bootstrap.php中,在Kohana::modules
行之后,这里抛出ErrorException。是的,我用shadowhand电子邮件模块探测它,但我得到了同样的错误
因此,我再次提出这个问题:
为什么kohana电子邮件(以及电子邮件和邮件)模块不能工作?或者,为什么kohana找不到电子邮件类?问题在于模块目录权限,如您在此处所见:
echo Debug::vars('What does this mean? Look at '.__FILE__.' line '.__LINE__,
/**
* PROTIP: Wrapping several variables in an array() prevents tailing
* commas "," causing exceptions.
*
* Each step below was added after the last step returned the expected result.
*/
array(
// The path to the module
$p = MODPATH.'kohana-email',
// should be a directory
is_dir($p),
// The path to "classes/"
$c = $p.DIRECTORY_SEPARATOR.'classes',
// should also be directory
is_dir($c),
// This doesn't seem right... the last call said it wasn't a directory
shell_exec('ls -al '.escapeshellarg($c)),
// That failed too? Wait a second...
shell_exec('ls -al '.escapeshellarg(MODPATH)),
// It looks like the the module directory is not readable!
is_readable($p),
is_readable($c),
// Both returned FALSE! We need to correct the permissions!
// I ran the following commands in my console the project root:
// $ find modules/ -type d -exec chmod 0755 {} \;
// $ find modules/ -type f -exec chmod a+r {} \;
// All permissions should be fixed now, all previous debugging was
// returning the proper values, so attempt to load the class
class_exists('Email'),
// Hooray!
Email::connect(),
)
);
多亏了shadowhand。问题在于模块目录权限,您可以在这里看到:
echo Debug::vars('What does this mean? Look at '.__FILE__.' line '.__LINE__,
/**
* PROTIP: Wrapping several variables in an array() prevents tailing
* commas "," causing exceptions.
*
* Each step below was added after the last step returned the expected result.
*/
array(
// The path to the module
$p = MODPATH.'kohana-email',
// should be a directory
is_dir($p),
// The path to "classes/"
$c = $p.DIRECTORY_SEPARATOR.'classes',
// should also be directory
is_dir($c),
// This doesn't seem right... the last call said it wasn't a directory
shell_exec('ls -al '.escapeshellarg($c)),
// That failed too? Wait a second...
shell_exec('ls -al '.escapeshellarg(MODPATH)),
// It looks like the the module directory is not readable!
is_readable($p),
is_readable($c),
// Both returned FALSE! We need to correct the permissions!
// I ran the following commands in my console the project root:
// $ find modules/ -type d -exec chmod 0755 {} \;
// $ find modules/ -type f -exec chmod a+r {} \;
// All permissions should be fixed now, all previous debugging was
// returning the proper values, so attempt to load the class
class_exists('Email'),
// Hooray!
Email::connect(),
)
);
多亏了暗影之手。我也遇到了类似的问题。在我的本地主机(操作系统Windows)上,一切正常,但在服务器(Ubuntu)上,我已经收到了这个错误。
我刚刚在modules/email/classes
中将email.php
重命名为email.php
,一切正常。我遇到了类似的问题。在我的本地主机(操作系统Windows)上,一切正常,但在服务器(Ubuntu)上,我已经收到了这个错误。
我刚刚在modules/email/classes
中将email.php
重命名为email.php
,一切正常