我有一个网站,我们称之为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
(非工作)测试子域网站的dispatch 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项目的代码没有理由是错误的,因为它在本地工作正常。因此,我唯一能想到的是,子域的路由以某种方式搞砸了,但我不知道如何修复它?或者如何修复它?
答案 0 :(得分:0)
所以事实证明这是非常愚蠢的事情。出于某种原因,在Windows上通过XAMPP在本地使用phalcon允许我使用indexController.php
作为控制器名称。但是,当上传到Apache服务器时,名称需要在完全驼峰的情况下大写到IndexController.php
才能工作。