0

ここで概説したように、小さな問題があります。

これはより一般的であり、おそらく他の人に役立つため、新しい質問を作成しました。

基本的に、Facebook SDK をライブラリとして Codeigniter に統合しました。

SDK には Json と Curl が必要です。

base_facebook.php ファイルには、次のコードがあります。

    if (!function_exists('curl_init')) {
  throw new Exception('Facebook needs the CURL PHP extension.');
}
if (!function_exists('json_decode')) {
  throw new Exception('Facebook needs the JSON PHP extension.');
}

これらの関数が利用できない場合、その旨を伝えるエラーが発生することを期待しています。その後、正しいパッケージをインストールして続行できます。

実際に起こったことは、エラー報告を E_ALL に設定していても、空白のページが返されたことです。

これによりデバッグが不可能になり、何度も遊んだ後、サーバーに CURL がインストールされていないことが原因であることがわかりました。

私の質問は、ライブラリ ベースの例外ではなく、codeigniter が空白のページを表示するのはなぜですか? さらに、ライブラリに例外があっても、ページの残りの部分が実行を継続しないのはなぜですか。基本的に、CI は例外の使用を無駄にしているように見えます。

誰でもアドバイスできますか?

ありがとう

4

1 に答える 1

0

私の質問は、ライブラリ ベースの例外ではなく、codeigniter が空白のページを表示するのはなぜですか?

おそらく、display_errorsが「off」に設定されているためです。

これは実稼働環境で推奨されますが (Web サイトのユーザーは内部エラー メッセージを表示することは想定されていません。表示されるはずのない内部に関する情報が表示される可能性があります)、開発中はあまり役に立ちません。何がうまくいかなかったのかを知りたい。

したがって、CI にこれに対する「デバッグ」設定があるかどうか、または PHP 構成で既にオフに設定されているかどうかを確認してください。

(CI または構成が、代わりにエラーがファイルに記録されるように設定されている可能性があります。本番環境にも推奨されます。開発中は、このファイルに注意する必要があります。)

さらに、ライブラリに例外があっても、ページの残りの部分が実行を継続しないのはなぜですか。

それが例外の動作方法であるためです。例外がアプリの「最上位」に到達したときにキャッチされない場合、致命的なエラーが発生し、それらが発生するとスクリプトが停止します。

try { … } catch(…) { … }スクリプト フローで発生する可能性のある例外を処理するための概念をよく理解してください。

(実際、高度な PHP フレームワークを使用している場合、これらすべてをまだ知らないというのはちょっと驚くべきことです…)

于 2012-09-29T15:58:38.660 に答える