CodeIgniterでの質問です。


CentOSにWEBサーバーをインストールしただけの状態だとトップページ以外の表示が正常に出来ませんでした。
症状としては下記に記載されているトラブルシューティングと同じなので
http://codeigniter.jp/user_guide_ja/installation/troubleshooting.html
こちらの対策を行えばよいと考えておりますが、CodeIgniter側での対策ではなく、サーバー側でPATH_INFO環境変数が使用出来るようにして対策したいと思います。
httpd.confかphp.iniの設定を変更すればよいと考えているのですが、それらしい記述を見つけられませんでした。
どの部分の設定を変更すれば良いのでしょうか?
使用環境はCentOS 5.6 / PHP 5.1.6 となります。
識者の方のアドバイスいただけると助かります。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2011/05/30 17:35:08
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答0件)

回答はまだありません

  • id:rouge_2008
    回答は可能ですが、単なる確認なのでコメントで失礼します。

    こちらはCetOS 5.4、PHP 5.1.6で確認しましたが、デフォルトでPATH_INFOが取得できる状態でした。
    適当に、次のような内容のファイルを作成して、実行して確認してみてください。

    <?php
    if(isset($_SERVER['PATH_INFO'])) {
    echo $_SERVER['PATH_INFO'];
    } else {
    echo "PATH_INFOがセットされていません。";
    }
    ?>

    「ファイル名.php/hatena/qa」という形式でアクセスした時に「/hatena/qa」のように表示されれば、PATH_INFOは有効になっています。
    http://php.net/manual/ja/reserved.variables.server.php

    トップページ以外の表示が正常に出来ないというのは、どのように表示できないのでしょうか?
    コントローラをどのように作成しましたか?
    http://codeigniter.jp/user_guide_ja/general/controllers.html


  • id:quocard
    rouge_2008 様

    回等いただきありがとうございます。
    CentOSは仮想環境に入れたものを使用しております。
    入れる際はWebとMySQLを入れた状態で、confなどの設定はデフォルトになっています。
    その状態で、$_SERVER['PATH_INFO']を取得しようとしたら「PATH_INFOがセットされていません」と表示されました。

    confいじって見えないのなら分かったのですが、特に何も触っていない状態でPATH_INFOが有効となっていないようです。
    原因が分からない・・・
  • id:rouge_2008
    ファイル名にパスを続けて入力した状態で実行したのでしょうか?
    無効になっていると404エラーになるはずなのですが・・・
    とりあえず、httpd.conf等のサーバ設定ファイル(<VirtualHost>、<Directory>内も可)または.htaccessに以下を記述してどうなるか試してみてください。

    AcceptPathInfo On

    http://httpd.apache.org/docs/2.0/ja/mod/core.html#acceptpathinfo
  • id:quocard
    度々の回答ありがとうございます。

    まずPATH_INFOについてですが、ルートディレクトリにindex.phpを置き、中身は回答していただいたものを記述して確認しました。
    その結果、PATH_INFOがセットされていませんとの表示となりました。

    Virtualホストは切っておらずそのまま使っております。
    Directoryは以下のようにしております。

    <Directory />
    Options FollowSymLinks
    AllowOverride All
    </Directory>

    AcceptPathInfoについても付加して

    <Directory />
    Options FollowSymLinks
    AllowOverride All
    AcceptPathInfo on
    </Directory>

    .htaccess
    AcceptPathInfo on

    としてみたのですが、それでもダメでした。
    レンタルサーバーなどに持っていくとPATH_NFOは取れているようなので、とりあえずそちらで動かしてみようかとも考えています。
  • id:rouge_2008
    CentOS 5.6で試してみましたが、こちらでは標準設定のままでも大丈夫でした。

    [root@localhost ~]# lsb_release -a
    LSB Version: :core-4.0-ia32:core-4.0-noarch:graphics-4.0-ia32:graphics-4.0-noarch:printing-4.0-ia32:printing-4.0-noarch
    Distributor ID: CentOS
    Description: CentOS release 5.6 (Final)
    Release: 5.6
    Codename: Final

    conf等の設定がそのままという事は、ドキュメントルートも「/var/www/html」のままですか?
    index.phpの内容を書き替えて、「phpinfo()」を実行するとどうなりますか?
    「http://localhost/index.php」でアクセスした場合は、「PHP Variables」の所に「_SERVER["PATH_INFO"]」が表示されず、「http://localhost/index.php/info」等でアクセスした場合に、「_SERVER["PATH_INFO"]」の項目が増えているはずなのですが・・・



    CodeIgniterで作成したコントローラも問題なく動作しました。
    もし以下のようなエラーが表示されて「404 Page Not Found」になる場合は、作成したファイルのアクセス権を見直してみてください。
    (※その他に「読み込みのみ」を設定します。)

    ***********************************************
    A PHP Error was encountered

    Severity: Warning

    Message: include(application/controllers/*****.php) [function.include]: failed to open stream: No such file or directory

    Filename: core/CodeIgniter.php

    Line Number: 234

    ***********************************************

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません