我正在开发webapp的部署工作,但终于碰到了一个我无法弄清楚我的问题拥有。Kohana无法在服务器上找到模板,但它在本地主机上工作正常
我在我的svn中有一个post-commit挂钩,它将我所有的提交部署到一个临时站点,以确保在我推送到生产之前没有任何间断。因此,假设我的本地工作副本没有挂起的提交,localhost和staging具有相同的文件。
现在,我的localhost工作得很好(代码库不完整,但这是一个完全独立的问题)。在我的临时网站,但是,我得到的Kohana框架以下异常:
View_Exception [0]:请查看index.tpl里找不到
如果我手动访问的URI的我的其他控制器,我得到相同的消息,与模板文件名替换。在堆栈跟踪之后,当框架试图加载我的模板文件时,错误发生在View工厂的before
函数中 - 如预期的那样。
我的views
目录(和其中包含的所有文件)与我的项目中的所有其他目录具有相同的权限,所以我不确定PHP为什么无法读取目录或文件。我也确认这些文件确实存在于服务器上。
我的错误日志没有显示任何内容;我的访问日志显示500错误。 Kohana日志文件显示屏幕上显示的相同信息。
我真的很困惑,为什么会发生这种情况。这个框架显然是正常运作的,因为我得到了Kohana的格式化异常,并且Kohana日志正在写入。自动加载器找到我的控制器类,因为当我访问使用不同模板的各种控制器时,“缺失”文件会相应地更改。但是服务器的行为与我的本地主机不匹配,我只好搔着我的脑袋。
看着Kohana::find_file
之后,这回false
的方法,我得出这样的Kohana正在寻找index.tpl.php
的结论。我添加了一些跟踪调试来确认,我是正确的:在我的本地主机上,Kohana正在寻找views\index.tpl
,而在我的服务器上,它正在寻找views/index.tpl.php
。然而,第二个奇怪的现象出现了,这可能是第一个解释。这是文件的完整列表find_file
尝试一下我的本地机器和我的服务器上加载了我的索引页时:
LOCAL: SERVER:
classes\I18n.php classes/I18n.php
classes\Kohana\I18n.php classes/Kohana/I18n.php
classes\HTTP.php classes/HTTP.php
classes\Kohana\HTTP.php classes/Kohana/HTTP.php
classes\Kohana\Exception.php classes/Kohana/Exception.php
classes\Kohana\Kohana\Exception.php classes/Kohana/Kohana/Exception.php
classes\Log.php classes/Log.php
classes\Kohana\Log.php classes/Kohana/Log.php
classes\Config.php classes/Config.php
classes\Kohana\Config.php classes/Kohana/Config.php
classes\Log\File.php classes/Log/File.php
classes\Kohana\Log\File.php classes/Kohana/Log/File.php
classes\Log\Writer.php classes/Log/Writer.php
classes\Kohana\Log\Writer.php classes/Kohana/Log/Writer.php
classes\Config\File.php classes/Config/File.php
classes\Kohana\Config\File.php classes/Kohana/Config/File.php
classes\Kohana\Config\File\Reader.php classes/Kohana/Config/File/Reader.php
classes\Kohana\Config\Reader.php classes/Kohana/Config/Reader.php
classes\Kohana\Config\Source.php classes/Kohana/Config/Source.php
classes\Route.php classes/Route.php
classes\Kohana\Route.php classes/Kohana/Route.php
classes\Cookie.php classes/Cookie.php
classes\Kohana\Cookie.php classes/Kohana/Cookie.php
classes\Session.php classes/Session.php
classes\Kohana\Session.php classes/Kohana/Session.php
classes\Request.php classes/Request.php
classes\Kohana\Request.php classes/Kohana/Request.php
classes\HTTP\Request.php classes/HTTP/Request.php
classes\Kohana\HTTP\Request.php classes/Kohana/HTTP/Request.php
classes\HTTP\Message.php classes/HTTP/Message.php
classes\Kohana\HTTP\Message.php classes/Kohana/HTTP/Message.php
classes\HTTP\Header.php classes/HTTP/Header.php
classes\Kohana\HTTP\Header.php classes/Kohana/HTTP\Header.php
classes\Request\Client\Internal.php classes/Request/Client/Internal.php
classes\Kohana\Request\Client\Internal.php classes/Kohana/Request/Client/Internal.php
classes\Request\Client.php classes/Request/Client.php
classes\Kohana\Request\Client.php classes/Kohana/Request/Client.php
classes\Arr.php classes/Arr.php
classes\Kohana\Arr.php classes/Kohana/Arr.php
classes\Response.php classes/Response.php
classes\Kohana\Response.php classes/Kohana/Response.php
classes\HTTP\Response.php classes/HTTP/Response.php
classes\Kohana\HTTP\Response.php classes/Kohana/HTTP/Response.php
classes\Profiler.php classes/Profiler.php
classes\Kohana\Profiler.php classes/Kohana/Profiler.php
classes\Controller\Home.php classes/Controller/Home.php
classes\Controller\HFTemplate.php classes/Controller/HFTemplate.php
classes\Controller\Template.php classes/Controller/Template.php
classes\Kohana\Controller\Template.php classes/Kohana/Controller/Template.php
classes\Controller.php classes/Controller.php
classes\Kohana\Controller.php classes/Kohana/Controller.php
classes\View.php classes/View.php
classes\Kohana\View.php classes/Kohana/View.php
classes\Smarty\View.php
config\smarty.php
classes\Config\Group.php
classes\Kohana\Config\Group.php
vendor\smarty/libs/Smarty.class.php
classes\URL.php
classes\Kohana\URL.php
classes\Smarty\Helper.php
classes\Kohana\Smarty\Helper.php
views\index.tpl views/index.tpl.php
classes\Auth.php
classes\Kohana\Auth.php
config\auth.php
classes\Auth\ORM.php
classes\Kohana\Auth\ORM.php
config\session.php
classes\Session\Database.php
classes\Kohana\Session\Database.php
classes\Database.php
classes\Kohana\Database.php
config\database.php
classes\Database\PDO.php
classes\Kohana\Database\PDO.php
classes\DB.php
classes\Kohana\DB.php
classes\Database\Query\Builder\Select.php
classes\Kohana\Database\Query\Builder\Select.php
classes\Database\Query\Builder\Where.php
classes\Kohana\Database\Query\Builder\Where.php
classes\Database\Query\Builder.php
classes\Kohana\Database\Query\Builder.php
classes\Database\Query.php
classes\Kohana\Database\Query.php
classes\Database\Result\Cached.php
classes\Kohana\Database\Result\Cached.php
classes\Database\Result.php
classes\Kohana\Database\Result.php
classes\ORM.php
classes\Kohana\ORM.php
classes\Model.php
classes\Kohana\Model.php
classes\Model\User.php
classes\Model\Auth\User.php
classes\Inflector.php
classes\Kohana\Inflector.php
config\inflector.php
classes\UTF8.php
classes\Kohana\UTF8.php
classes\Model\Role.php
classes\Model\Auth\Role.php
classes/View/Exception.php
classes/Kohana/View/Exception.php
classes/Debug.php
classes/Kohana/Debug.php
classes/Date.php
classes/Kohana/Date.php
views/kohana/error.php
classes/Text.php
classes/Kohana/Text.php
(page content) (exception page content)
classes\Database\Query\Builder\Update.php
classes\Kohana\Database\Query\Builder\Update.php
存在这样的情况,系统应该将得到的Smarty模块差距类,但不是。看到这个之后,我确认了Smarty模块确实存在于服务器上,并且它在Kohana的引导程序中启用。但它没有被加载。有任何想法吗?
任何你忘记在'app中启用Smarty的机会lication/bootstrap.php'? (在'Kohana :: modules'部分)。 –
@RaelGugelminCunha:“看到这个之后,我确认了Smarty模块确实存在于服务器上,并且它在Kohana的引导程序中启用了。” –