我如何require_once
在我的控制器中,我放入kohana\vendor\twitter-api-php
的第三方课程?我试过this answer这是类似的,但我一直收到错误(见下文)。我项目的文件结构如下:
kohana
- application
- modules
- system
- vendor
我一直收到这些错误
Warning: Uncaught exception 'ErrorException' with message 'require_once(C:\wamp\www\kohana): failed to open stream: Permission denied' in C:\wamp\www\kohana\application\classes\Controller\Twitter.php:8 Stack trace: #0 C:\wamp\www\kohana\application\classes\Controller\Twitter.php(8): Kohana_Core::error_handler(2, 'require_once(C:...', 'C:\wamp\www\koh...', 8, Array) #1 C:\wamp\www\kohana\application\classes\Controller\Twitter.php(8): Controller_Twitter::before() #2 C:\wamp\www\kohana\system\classes\Kohana\Controller.php(69): Controller_Twitter->before() #3 [internal function]: Kohana_Controller->execute() #4 C:\wamp\www\kohana\system\classes\Kohana\Request\Client\Internal.php(97): ReflectionMethod->invoke(Object(Controller_Twitter)) #5 C:\wamp\www\kohana\system\classes\Kohana\Request\Client.php(114): Kohana_Request_Client_Internal->execute_request(Object(Request), Object(Response)) #6 C:\wamp\www\kohana\system\classes\Kohana\Request.php(986): Kohana_Request_Client->execute(Object(Request)) #7 C:\wamp\www\kohana\index.p in C:\wamp\www\kohana\application\classes\Controller\Twitter.php on line 8
和此错误
Fatal error: Controller_Twitter::before(): Failed opening required '' (include_path='.;C:\php\pear') in C:\wamp\www\kohana\application\classes\Controller\Twitter.php on line 8
这是我的代码
<?php defined('SYSPATH') or die ('No direct script access.');
class Controller_Twitter extends Controller {
public function before()
{
// require_once(APPPATH.'vendor/twitter-api-php/TwitterAPIExchange.php');
require_once Kohana::find_file('vendor/twitter-api-php', 'TwitterAPIExchange');
}
public function action_index()
{
$view = new View('twitter/index');
$this->response->body($view);
}
}
答案 0 :(得分:2)
将vendor
文件夹放在application
文件夹中。
application
,modules
和system
文件夹的位置可以在index.php
中设置,并存储在APPPATH
,{{1} }和MODPATH
常量。 Kohana :: find_files()将在SYSPATH
中查找,然后在APPPATH
下的所有已加载模块中查找(好吧,模块可以位于任何位置,但我假设它们都在MODPATH
下你的情况),最后是MODPATH
。 Kohana :: find_files()不会神奇地看向其他任何地方。
另外,为什么不把require_once放在类defenition之外呢?像这样。
SYSPATH