スポンサーサイト

0

    一定期間更新がないため広告を表示しています


    • 2014.12.23 Tuesday
    • -
    • -
    • -
    • -
    • -
    • by スポンサードリンク

    xserverでCodeIgniterアプリを入れたら延々404に[解決済み]

    0
      正月早々ですが、また次回ハマったらいやなのでメモ。

       xserverに開発済みのCIアプリを入れて、一通りページを表示して確認していたところ、homeコントローラ配下の画面がことごとく404エラーになっていました。

      なんでなんでー?とlogレベルをdebugに変更して/index.php/home/indexと直打ちしてアクセス
      URI class initialized
      404 notfound --> index
      どうやらURIクラス初期化までOK、次のROUTERの初期化がうまくいってない(ここで404?)。

      で、system/libraries/Router.phpを見る。
      Router class initializedをログ出力する前に呼んでいるRouter::_set_routing()内で、URIクラスから渡されたURIを見てみる。…??あれ??/home/indexにアクセスしたのに/indexになってる。そりゃ404にもなる罠。

      Routerクラスを元に戻して、system/libraries/URI.phpを見る。
      URI::_fetch_uri_string()→URI::_parse_request_uri()と実際の処理部分を探して見る。
      $_SERVER['REQUEST_URI']は/home/indexが入っている。OK。
      その次、$fc_pathというのと$_SERVER['REQUEST_URI']を/でexplodeしたものを比較して、array_sliceしている。ここアヤシイ!!
      $fc_pathってなに?と値を見てみたところ、index.php(フロントコントローラ)のパスが入っていました。
      要するに、xserverのドキュメントルートのパスが/home/hogehoge/public_htmlのようになっているのに、デフォルトコントローラ名としてhomeを使ったのが原因。CIアプリをドキュメントルートでなく物理フォルダを切って配置した場合に対するCI側の対策が仇になっていた。
      とりあえず、今回のブツは他へ移植する予定のないアプリなので、$fc_pathとの比較&array_sliceしている箇所をURI.php内で勝手にコメントアウト。

      私はデフォルトコントローラをhomeとすることが多いのですが、前回xserver使ったときはCI使い初期に作ったアプリでデフォルトコントローラはwelcomeのままだったので、これにひっかからなかった模様。
      この問題はURIルーティング方法としてREQUEST_URIを選択した場合のみ出てくるので、他の方法(PATH_INFOとかQUERY_STRING)にすれば問題ない模様。


      1

      PR

      calendar

      S M T W T F S
           12
      3456789
      10111213141516
      17181920212223
      24252627282930
      31      
      << January 2010 >>

      twitter

      selected entries

      categories

      archives

      recent comment

      • djangoテンプレート上でmodelのメソッドに引数を渡す方法(djangoで出勤簿アプリ試作中♪)
        GavannITサービス-なりとみ
      • 私がそれでも名古屋市に住み続ける理由を6つにまとめてみた!
        bose wireless speaker
      • FastCGIでdjango…400エラー???
        levi's
      • さくらインターネットdjangoが突然500エラー!?(Pythonバージョンアップされてた
        salomon running shoes
      • 私がそれでも名古屋市に住み続ける理由を6つにまとめてみた!
        louboutin shoes
      • FastCGIでdjango…400エラー???
        yeezy boost 350
      • さくらインターネットdjangoが突然500エラー!?(Pythonバージョンアップされてた
        jordan 11
      • Silexでエラーページをカスタマイズする方法 : Symfony Advent Calendar 2011 - day 12
        pandora jewelry
      • django対symfony 日本語メール送信(その1 symfony編)
        nike air vapormax
      • 解決!XREAでCGI版Pythonを使ってdjangoを動かす(人柱?)
        kate spade

      recent trackback

      • HTMLの表(TABLE)のセル(TD)に斜線を引くjavascriptライブラリ slash.js 作っちゃいました
        常山日記
      • django対symfony 日本語メール送信(その1 symfony編)
        CPA-LABテクニカル
      • CodeIgniterでユーザー認証
        されどLAMPな日々
      • 久々にdjangoを最新版にしたらHTMLがエスケープされちゃった!!(解決済み)
        常山日記
      • FastCGIを諦めてmod_pythonを使う。Apacheのアップグレード
        サーバー用語集
      • さくらインターネット、sqlite3でdjango@CGI版を使う際の設定メモ
        常山日記
      • さくらインターネット スタンダードプランでdjango使ってる方、DBは?
        mitszoの日記
      • python多次元リストをsort(並べ替え)する方法?
        mitszoの日記
      • フォームから送信した値とrequest.POSTの挙動($_POST@PHPとの比較)
        Humming Via Kitchen
      • 日本語テキストをtruncate@django(Python全般にも??)
        常山日記

      recommend

      links

      profile

      search this site.

      others

      mobile

      qrcode

      powered

      無料ブログ作成サービス JUGEM