title: Kohana can't find template on the server, but it works fine on localhost
body: <p>I'm working out the kinks in the deployment of my webapp in development, but I've finally hit one I can't figure out on my own.</p>
  
  <p>I have a post-commit hook in my svn that deploys all of my commits to a staging site, to ensure nothing breaks before I push to production. Thus, assuming my local working copy has no pending commits, localhost and staging have identical files.</p>
  
  <p>Right now, my localhost works perfectly fine (the codebase isn't complete, but that's an entirely separate issue). On my staging site, however, I get the following exception from Kohana framework:</p>
  
  <blockquote>
    <p>View_Exception [ 0 ]: The requested view index.tpl could not be found</p>
  </blockquote>
  
  <p>If I manually visit the uris for my other controllers, I get the same message, with the template filename substituted. Following the stack trace, the error is occurring in the  <code>before</code> function of the View factory, when the framework attempts to load my template file -- as expected.</p>
  
  <p>My <code>views</code> directory (and all the files contained therein) has the same permissions as all of the other directories in my project, so I'm not sure why PHP wouldn't be able to read the directory or the files. I've also confirmed that the files do in fact exist on the server.</p>
  
  <p>My error log shows nothing; my access log shows a 500 error. The Kohana logfile shows the same information that appears on-screen.</p>
  
  <p>I'm genuinely confused as to why this is happening. The framework is obviously functioning, as I'm getting Kohana's formatted exception and the Kohana log is being written to. The autoloader is finding my controller classes, because the "missing" file changes appropriately as I visit my various controllers which use different templates. But the server's behavior doesn't match my localhost, and I'm left scratching my head.</p>
  
  <hr>
  
  <p>After looking at <code>Kohana::find_file</code>, the method that's returning <code>false</code>, I came to the conclusion that Kohana was looking for <code>index.tpl.php</code>. I added some trace debugging to confirm, and I was correct: on my localhost, Kohana is looking for <code>views\index.tpl</code> while on my server, it's looking for <code>views/index.tpl.php</code>. However, a second oddity appeared, which may explain the first. Here is the full list of files that <code>find_file</code> tries to look for when loading up my index page on my local machine and my server:</p>
  
  <pre><code>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
  </code></pre>
  
  <p>There is a gap where the system <em>ought</em> to be getting the Smarty module classes, but isn't. After seeing this, I confirmed that the Smarty module does in fact exist on the server and that it's enabled in Kohana's bootstrap. Yet it isn't being loaded. Any ideas?</p>