CodeIgniter始终显示默认控制器

时间:2016-08-08 17:07:39

标签: php codeigniter

我在亚马逊上的EC2实例上部署了我的codeigniter应用程序时出现问题。

$config['base_url'] = 'http://XX.XX.XXX.107/';
$config['index_page'] = 'index.php';

这是我的route.php(没有任何特殊规则)

$route['default_controller'] = 'home';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;

实际上如果我调用http://xx.xx.xxx.107/它会正确显示我的第一页(它会加载我的默认控制器Home.php并显示home.php视图)。 但是,如果我调用示例http://xx.xx.xxx.107/index.php/Test/simplepage,而不是显示简单的页面视图,它会再次显示默认的主视图。

我启用了日志,这就是我要进入的http://xx.xx.xxx.107/index.php/Test/simplepage

INFO - 2016-08-08 17:27:50 --> Config Class Initialized
INFO - 2016-08-08 17:27:50 --> Hooks Class Initialized
DEBUG - 2016-08-08 17:27:50 --> UTF-8 Support Enabled
INFO - 2016-08-08 17:27:50 --> Utf8 Class Initialized
INFO - 2016-08-08 17:27:50 --> URI Class Initialized
DEBUG - 2016-08-08 17:27:50 --> No URI present. Default controller set.
INFO - 2016-08-08 17:27:50 --> Router Class Initialized
INFO - 2016-08-08 17:27:50 --> Output Class Initialized
INFO - 2016-08-08 17:27:50 --> Security Class Initialized
DEBUG - 2016-08-08 17:27:50 --> Global POST, GET and COOKIE data sanitized
INFO - 2016-08-08 17:27:50 --> Input Class Initialized
INFO - 2016-08-08 17:27:50 --> Language Class Initialized
INFO - 2016-08-08 17:27:50 --> Loader Class Initialized
INFO - 2016-08-08 17:27:50 --> Helper loaded: file_helper
INFO - 2016-08-08 17:27:50 --> Helper loaded: form_helper
INFO - 2016-08-08 17:27:50 --> Helper loaded: url_helper
INFO - 2016-08-08 17:27:50 --> Database Driver Class Initialized
INFO - 2016-08-08 17:27:50 --> Database Driver Class Initialized
INFO - 2016-08-08 17:27:50 --> Session: Class initialized using 'files' driver.
INFO - 2016-08-08 17:27:50 --> XML-RPC Class Initialized
INFO - 2016-08-08 17:27:50 --> Controller Class Initialized
INFO - 2016-08-08 17:27:50 --> Model Class Initialized
INFO - 2016-08-08 17:27:50 --> Model Class Initialized
INFO - 2016-08-08 17:27:50 --> Model Class Initialized
INFO - 2016-08-08 17:27:50 --> Model Class Initialized
INFO - 2016-08-08 17:27:50 --> Form Validation Class Initialized
DEBUG - 2016-08-08 17:27:50 --> Session class already loaded. Second attempt ignored.
INFO - 2016-08-08 17:27:50 --> File loaded: /var/www/core_ci/application/views/header.php
INFO - 2016-08-08 17:27:50 --> File loaded: /var/www/core_ci/application/views/home.php
INFO - 2016-08-08 17:27:50 --> File loaded: /var/www/core_ci/application/views/footer.php
INFO - 2016-08-08 17:27:50 --> Final output sent to browser
DEBUG - 2016-08-08 17:27:50 --> Total execution time: 0.0225

正如你在日志中看到的那样,我得到了DEBUG - 2016-08-08 15:43:25 - >没有URI存在。默认控制器设置。即使我正在调用此网址http://xx.xx.xxx.107/index.php/Test/simplepage

这里有一些关于我的服务器的数据:

PHP Version 5.5.35
System Linux ip-xx-x-x-xxx 4.4.8-20.46.amzn1.x86_64 #1 SMP Wed Apr 27 19:28:52 UTC 2016 x86_64
Build Date May 2 2016 23:29:10
Server API FPM/FastCGI

这里是vhost Apache文件:

<VirtualHost *:80>

  # Leave this alone. This setting tells Apache that
  # this vhost should be used as the default if nothing
  # more appropriate is available.

  ServerName default:80

  # REQUIRED. Set this to the directory you want to use for
  # your “default” site files.

  DocumentRoot /var/www/html

  # Optional. Uncomment this and set it to your admin email
  # address, if you have one. If there is a server error,
  # this is the address that Apache will show to users.

  #ServerAdmin you@example.com

  # Optional. Uncomment this if you want to specify
  # a different error log file than the default. You will
  # need to create the error file first.

  #ErrorLog /var/www/vhosts/logs/error_log

  <Directory /var/www/html>
    AllowOverride All
  </Directory>

  ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/html/$1
  DirectoryIndex /index.php index.php
</VirtualHost>

这是我为调查而构建的测试控制器(Test.php,文件名大写)

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Test extends CI_Controller {
        public function __construct()
        {
                parent::__construct();
                $this->load->helper('url');
        }

        public function simplepage()
        {
                $data['title'] = 'HOME';
                $data['uriok'] = $this->uri->uri_string();

                $this->load->view('test',$data);
        }
}

这里是视图文件

<html lang="en">
<head>
    <title id='Description'>This is a simple test page.</title>
</head>
<body class='default'>
<div id='jqx'>
    <div style="margin top: 10px;"><?php echo($title) ?></div>
    <div style="margin-top: 10px;"><?php echo($uriok) ?></div>
</div>
</body>
</html>

如果我在我的localhost上执行它,它会工作,向我展示这个html页面

<html lang="en">
<head>
    <title id='Description'>This is a simple test page.</title>
</head>
<body class='default'>
<div id='jqx'>
    <div style="margin top: 10px;">HOME</div>
    <div style="margin-top: 10px;">Test/simplepage</div>
</div>
</body>
</html>

如果我尝试在EC2上运行它会失败,因为我已经说过了......它再次执行默认控制器并显示默认视图。似乎因为它无法正确获取URI,它运行默认控制器。 我认为我的配置有问题,但我找不到。

有没有人可以告诉我我失败的地方?

提前致谢。

0 个答案:

没有答案