- 締切済み
PHPの設定 エラー処理について
当方PHPの初心者です。 現在HTML上でPHPの動作をさせているのですが 一部の処理で【Fatal error: Call to undefined function】というエラーがでて処理が途中で止まってしまいます。 エラー文自体は正しく、元々テスト環境でPHPを動作させているので、本番のDBや該当ファイルが無い為にエラーとなっています。 ただ、ステージングという扱いにしてソースをそのままでアップさせたいので、エラーが必ず出る箇所を無視して先に進めたいと考えています。 エラーが起こる部分をコメントアウトする事は二度手間になり、本番化の場合にヒューマンエラーが発生するのを防ぐ為です。 そこでご相談なのですが、PHP処理の時に該当ファイルが無い等のエラーを無視してそのまま続行する。 方法はありますでしょうか。 通常の処理は動作確認済みです。 <?php echo date('Y年m月d日'); ?>等 エラーが発生するのは下記のような場合です。 <?php e($this->renderElement("サーバーが違うので存在しない")); ?> 色々情報を探ったのですが中々解決策をつかめず・・ どなたかお力添えを頂ければありがたいです。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- めとろいと(@naktak)
- ベストアンサー率36% (785/2139)
> そして、ステージング、本番ではDBへの接続が正しく行われる為 > エラーは発生しません。 テスト用サーバでもDBを構築すればいい話では。 環境が整っていないにも関わらず、そのテスト用サーバでの検証を行うが為に コードを改変することは、到底正しいアプローチとは思えません。 きっちりしたコードであれば、むしろDBに接続できないからシステムを利用することは できない旨の表示が行われ、それが試験の一部になると思います。 見た目の試験と言えど、DBの抽出結果に応じて『見た目』が変化する場面は 往々にして存在すると思います。 もし、テスト用サーバ上で本当に単調な見た目だけを確認するだけならば、 コードを破棄する前提で、コードが改変されても良しとした上で、処理部分を 全部コメントアウトして都合のいいデータが渡されるようにすればいいのでは ないでしょうか。 『見た目』だけを求めて、処理部分は注視しないのですから。 しかし、それが『試験』として妥当な方法かどうかは別です。 そういうことをやるのは、せいぜい、画面レイアウトをキャプチャして資料化 する際でしょうか。
>> 本番のDBや該当ファイルが無い為にエラーとなっています。 同じ環境をローカルに作るべきじゃないでしょうか?ホストや使用DBの違いなどにはPDOを用いればDSNの書き換えだけで対応することができ、使用DBが違えど同じようなスキーマを作成すれば本番環境と同様に動かすことは十分可能だと思います。 PHPでデータベースに接続するときのまとめ http://qiita.com/mpyw/items/b00b72c5c95aac573b71 むしろリダイレクト中などに発生するいかなるエラーも見逃さないように、 set_error_handler(function ($errno, $errstr, $errfile, $errline) { throw new ErrorException($errstr, $errno, 0, $errfile, $errline); }); を最初に実行してエラーを例外に変換するぐらいしてもいいと思います。「動けばいい」って考え方は間違っていると思うんで。
- yambejp
- ベストアンサー率51% (3827/7415)
エラーを強制的にぶっちぎると、その後の処理はまったく信頼性に欠けますが よろしいのでしょうか? とりあえずPHPのエラー処理を試してみることをおすすめします http://www.php.net/manual/ja/book.errorfunc.php
補足
補足が足りず申し訳ありませんでした。 そして補足に入力したのに消えてしまっており、回答されていない形となってしまい申し訳ありません。 詳しくは 1.テスト用サーバー ↓ 2.ステージングサーバー ↓ 3.本番サーバー という流れで動作チェック、見た目のチェックを行おうと 考えています。 そして、ステージング、本番ではDBへの接続が正しく行われる為 エラーは発生しません。 記述として正しいのです。 その部分を生きにしたまま、テスト用サーバーで見た目の部分を 色々検証したいというのが現状です。 色々試行錯誤した結果、try&catch?というのがエラー処理が行えそうと 推測しています。 そもそもの設定の仕方すらわからないのですが・・これを試してみよう という段階です。
- めとろいと(@naktak)
- ベストアンサー率36% (785/2139)
> エラー文自体は正しく、元々テスト環境でPHPを動作させているので、本番のDBや該当ファイルが無い為に > エラーとなっています。 本当にそうでしょうか? 仰っているエラーは、呼び出そうとしている命令は定義されていないとした際に発生するエラーです。 そもそも何かがおかしいのではないでしょうか? また、小手先の対応を行うのではなく、それを考慮した上でロジックを組めば、そもそもエラーを発生させることなく処理を完結させることが可能でしょう。 こんな情報がありますが、CakePHPを利用してコードしているのでしょうか? http://blog.maesan.jp/1254060.html
補足
補足が足りず申し訳ありませんでした。 そして補足に入力したのに消えてしまっており、回答されていない形となってしまい申し訳ありません。 詳しくは 1.テスト用サーバー ↓ 2.ステージングサーバー ↓ 3.本番サーバー という流れで動作チェック、見た目のチェックを行おうと 考えています。 そして、ステージング、本番ではDBへの接続が正しく行われる為 エラーは発生しません。 記述として正しいのです。 その部分を生きにしたまま、テスト用サーバーで見た目の部分を 色々検証したいというのが現状です。 色々試行錯誤した結果、try&catch?というのがエラー処理が行えそうと 推測しています。 そもそもの設定の仕方すらわからないのですが・・これを試してみよう という段階です。
補足
補足が足りず申し訳ありませんでした。 そして補足に入力したのに消えてしまっており、回答されていない形となってしまい申し訳ありません。 詳しくは 1.テスト用サーバー ↓ 2.ステージングサーバー ↓ 3.本番サーバー という流れで動作チェック、見た目のチェックを行おうと 考えています。 そして、ステージング、本番ではDBへの接続が正しく行われる為 エラーは発生しません。 記述として正しいのです。 その部分を生きにしたまま、テスト用サーバーで見た目の部分を 色々検証したいというのが現状です。 色々試行錯誤した結果、try&catch?というのがエラー処理が行えそうと 推測しています。 そもそもの設定の仕方すらわからないのですが・・これを試してみよう という段階です。