4

シナリオ

CodeIgniter 3 の現在の開発バージョンにアップグレードしている Web サイトがあります。アップグレード手順に従って、すべてのクラス ファイルの名前を最初に大文字に変更しました (例: application/controllers/Home.php)。

期待される結果

小文字の URL でコントローラを通常どおり使用するには、次のようにします。

http://examplesite.com/home/

Home.php コントローラーを使用します。

私が得たもの

URL の最初の文字が小文字の場合、大文字のファイル名は自動的に呼び出されません。(404 エラー)。

私が試してみました

  • コントローラの最初の文字を大文字にして URL を入力します。http://examplesite.com/Home/これにより、期待どおりにコントローラーが生成されます。
  • routes.php のデフォルト コントローラを大文字にすると、期待どおりにページが生成されます。ただし、最初の文字が大文字のコントローラーを含めるようにすべての URL を変更する必要がある場合、これは理想的とは言えません。

ノート

  • サイトは PHP 5.3.17 FastCGI で実行されています。
  • index.php は、次の .htaccess ルールで URL から削除されました。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]

どんな助けでも大歓迎です。

編集 1

_validate_requestコアルーターの機能に絞り込みました。からその関数への呼び出しをコメントアウトすると機能し_set_requestます。

編集 2

_validate_request関数の名前を に変更_validate_request2し、新しい名前を使用して呼び出すと、完全に機能します。この関数名は予約語ですか?

4

3 に答える 3

3

コメントで解決し、公式にするためだけにこれを書いています...

アップグレードするときは、コア CodeIgniter ライブラリの拡張機能があるかどうかを常に確認する必要があります。その場合、少なくともそれらの一部をオーバーロードしている可能性があり、元のコードが変更されたときにアプリケーションが壊れる可能性があります。

于 2013-11-27T17:14:00.127 に答える