トラブルシューティング
以下に、一般的なインストール時の問題と、推奨される回避策を示します。
インストールが動作しているかどうかを確認するには?
コマンドラインから、プロジェクトのルートで
php spark serve
ブラウザで https://:8080
にアクセスすると、デフォルトのウェルカムページが表示されるはずです
URL に index.php を含める必要がある
/mypage/find/apple
のような URL が機能せず、同様の URL /index.php/mypage/find/apple
が機能する場合、それは Apache の **.htaccess** ルールが正しく設定されていないか、Apache の **httpd.conf** 内の mod_rewrite
拡張機能がコメントアウトされている可能性があります。index.php ファイルの削除 を参照してください。
デフォルトページのみがロードされる
URL に何を入力してもデフォルトページのみがロードされる場合、サーバーが検索エンジンフレンドリーな URL を提供するために必要な REQUEST_URI 変数をサポートしていない可能性があります。まず、**app/Config/App.php** ファイルを開き、URI プロトコル情報を探してください。いくつかの代替設定を試すことを推奨します。これを試してもまだ機能しない場合は、CodeIgniter に URL に疑問符 (?
) を強制的に追加する必要があります。これを行うには、**app/Config/App.php** ファイルを開き、これを変更します
<?php
namespace Config;
use CodeIgniter\Config\BaseConfig;
class App extends BaseConfig
{
// ...
public string $indexPage = 'index.php';
// ...
}
これに変更します
<?php
namespace Config;
use CodeIgniter\Config\BaseConfig;
class App extends BaseConfig
{
// ...
public string $indexPage = 'index.php?';
// ...
}
入力ファイルが指定されていません
「入力ファイルが指定されていません」と表示される場合は、次の例のようにリライトルールを変更してみてください (index.php
の後に ?
を追加します)
RewriteRule ^([\s\S]*)$ index.php?/$1 [L,NC,QSA]
アプリはローカルでは正常に動作するが、本番サーバーでは動作しない
フォルダー名とファイル名の大文字と小文字がコードと一致していることを確認してください。
多くの開発者は、Windows または macOS の大文字と小文字を区別しないファイルシステムで開発します。ただし、ほとんどのサーバー環境では大文字と小文字を区別するファイルシステムが使用されています。
たとえば、**app/Controllers/Product.php** がある場合、短いクラス名として product
ではなく Product
を使用する必要があります。
ファイル名の大文字と小文字が間違っている場合、サーバーでファイルが見つかりません。
チュートリアルでどこでも 404 エラーが発生する :(
PHP の組み込み Web サーバーを使用してチュートリアルに従うことはできません。リクエストを適切にルーティングするために必要な **.htaccess** ファイルを処理しません。
解決策:Apache を使用してサイトを公開するか、プロジェクトのルートから組み込みの CodeIgniter の同等の php spark serve
を使用します。
役に立たない「おっと!」ページは何ですか?
アプリに「おっと!」というページが表示され、次に「問題が発生したようです。後でもう一度試してください…」というテキスト行が表示される場合があります。
これは、本番モードで、回復不能なエラーが発生したことを示す兆候です。セキュリティを向上させるために、Web アプリの閲覧者に表示したくありません。
ログファイルでエラーを確認できます。以下の CodeIgniter エラーログ を参照してください。
開発中にこのページに到達した場合は、環境を「development」(**.env** 内) に変更する必要があります。開発モードの設定 を参照して詳細を確認してください。その後、ページをリロードしてください。エラーとバックトレースが表示されます。
CodeIgniter エラーログ
CodeIgniter は、**app/Config/Logger.php** の設定に従ってエラーメッセージをログに記録します。
エラーのしきい値を調整して、表示するメッセージの数を増減できます。詳細については、ロギング を参照してください。
デフォルト設定では、日次ログファイルは **writable/logs** に保存されます。期待どおりに動作しない場合は、それらを確認することをお勧めします。