2017-02-19 20 views
0

CodeIgniter 3プロジェクトのdefault_controllerが呼び出されていないような問題を調べるように頼まれました。代わりに404エラーが表示されます。CodeIgniter 3がデフォルトコントローラを呼び出していませんか?

class Welcome extends CI_Controller { 

     public function __construct() 
     { 
       parent::__construct(); 
       // Your own constructor code 
     } 

     public function index() 
     { 
       print('hello'); 
       $this->load->view('welcome_message'); 
     } 
} 

application/config/routes.phpファイルがあります:

$route['default_controller'] = "welcome"; 

私は404を見ていないと予想されるテキストのいずれapplication/controllersフォルダに

次の内容のWelcome.phpファイルがあります。

routes.phpprintステートメントを追加すると、ロードされていることが示されます。また、それを明示的にルートに結び付けても呼び出されますが、デフォルトのコントローラーに設定されているときは呼び出されません。

$route['blah'] = "welcome" 

何が起こっている可能性がありますか?

私たちはUbuntu 16.04マシンでPHP7を使用しています。

+0

あなたの '.htaccess'ファイルはどうですか? –

+0

どうしますか?私は何を確認すべきですか? –

+0

'localhost/project_name/welcome'を使用してください。 –

答えて

0

プロジェクトは、CodeIgniter 2プロジェクトからのアップグレードであり、完了していない移行手順がいくつかありました。ライブラリフォルダにMY_Router.phpがあったことが判明しました。少なくともMY_Router.appをアプリケーション/コアに移動することで問題が解決されました。

追加の変更がCI3の移行の一部として要求された、ファイル名の大文字と小文字与えられたMY_Router.phpファイルで必要とされた:

function _validate_request($segments) 
{ 
    // Does the requested controller exist in the root folder? 
    if (file_exists(APPPATH.'controllers/'.ucfirst($segments[0]).'.php')) 
    { 
     return $segments; 
    } 
    ... 
} 

はところで私はそれがHTTPサーバ書き換え問題ではなかったと確信していましたこれは、CodeIgniter 404のエラーページに予想されるコールパスが表示されていたためです。私はprint(_SERVER['REQUEST_URI'])を追加して、何が起こっていたのかを確認しました。

編集:上記のucfirstアプローチは他のインストールでは理想的ではありませんが、このプロジェクトのコントローラフォルダにはサブフォルダがないので、このプロジェクトのクイックフィックスです。

関連する問題