0

我有一个网站,我们称之为 www.main.com,它位于服务器上的 /home4/username/public_html/main。该站点正在运行 Phalcon PHP,完全没有问题。

现在我做了一个子域,我们称之为test.main.com,并使用cPanel将子域的路由设置为/home4/username/testsite/test。这就是问题所在。

/public_html 和 /testsite 都有自己的 .htaccess 文件,其中包含以下内容:

测试地点:

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule  ^$ test/public/    [L]
    RewriteRule  ((?s).*) test/public/$1 [L]
</IfModule>

主站点:

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteRule  ^$ main/public/    [L]
  RewriteRule  ((?s).*) main/public/$1 [L]
</IfModule>

并通过 XAMPP 在本地测试测试站点,它工作正常(目前只是一个非常简单的 Phalcon 测试页面)。但是当我将完全相同的站点上传到服务器 phalcon 错误时: PhalconException: IndexController handler class cannot be loaded

(非工作)测试子域站点的调度 index.php 文件包含以下内容:

<?php

try {
    //Register an autoloader
    $loader = new \Phalcon\Loader();
    $loader->registerDirs(array(
       '../app/controllers/',
       '../app/models/'
    ))->register();

    //Create a DI
    $di = new Phalcon\DI\FactoryDefault();

    //Setup the view component
    $di->set('view', function(){
       $view = new \Phalcon\Mvc\View();
       $view->setViewsDir('../app/views/');
       return $view;
    });

    //Setup a base URI
    $di->set('url', function(){
       $url = new \Phalcon\Mvc\Url();
       $url->setBaseUri('/test/');
       return $url;
    });

    //Handle the request
    $application = new \Phalcon\Mvc\Application($di);

    echo $application->handle()->getContent();

} catch(\Phalcon\Exception $e) {
    echo "PhalconException: ", $e->getMessage();
    echo "<br /><br /><strong>Trace Stack</strong>: ", $e->getTraceAsString();
}

现在这令人困惑,正如我所说,Phalcon 项目在代码方面没有任何原因是错误的,因为它在本地运行良好。所以我唯一能想到的是子域的路由以某种方式搞砸了,但我不知道如何或如何修复它?

4

1 回答 1

0

所以事实证明这是一件非常愚蠢的事情。出于某种原因,在 Windows 上通过 XAMPP 在本地使用 phalcon 允许我indexController.php用作控制器名称。但是,当上传到 Apache 服务器时,名称需要大写完整的驼峰式IndexController.php才能起作用。

于 2017-06-09T14:38:39.933 回答