16章 デバッグ
黒本だと11章のアプリケーションに関するテクニックの、エラーの箇所が対応する。
PHP開発の場合開発環境、ステージング環境、本番環境の3つがある
16.1 開発環境
開発環境はエラー報告をできる限り設定しておく
Gitなどでバージョン管理するべきだが、そうでないならlocalhost環境を用意する方法がある
localhost環境構築にはZend Server CEやApache Web Server,MicorosoftのIISなどを手動でインストールする方法がある
他にも、ビルドインウェブサーバーを使う方法、クラウド環境を利用する方法がある
ビルドインウェブサーバー
http://php.net/manual/ja/features.commandline.webserver.php
Zend社の開発・テスト用のクラウド環境
http://www.phpcloud.com/
16.2 ステージング環境
自分のコードがどのように動くのかを本番環境をシミュレートした保護された環境で試すことができ、
また、エンドユーザ・クライアントが新機能を試す場でもある。
つまり、開発者用と、クライアント用の2種類用意するとよい(リソースがあれば)
16.3 本番環境
エラー報告の制御は厳しくする
404のページリダイレクトやtry~catch構文でエラーをうまく回避し、ログファイルに書き出すようにする
16.4 php.ini設定
-
display_errors
→本番環境では0 -
error_reporting
→ いろいろな設定がある(黒本11章参照)
→ ステージング環境でのおすすめ設定として
動きが怪しいファイルが有る時、そのファイルにだけ頭に記載すると、エラーを吐き出す。
error_report(E_ALL);
ini_set("display_errors", 1);
16.5 手動でのデバッグ
Zend Studio for EclipseやKomodoといった統合開発環境を使う
→変数の内容に依存する論理的エラーも捕捉可
・var_dump()、print()、pritn_r()がある
→print_rの場合、データ型表示はなし
16.6 エラーログ
ログの置き場所は、
Ubuntuの場合デフォルトは/var/logs/apache2.jogになる
16.7 IDEをつかったデバッグ
複雑な問題はIDEを使ったデバッグが一番
Zend Studio for Eclipse をつかったデバッグもある(これはJSもデバッグできる)
他にもKomodoやPhpEDがある
実行しているコードがブラウザに表示する内容を表示する
Debug OutputビューとBrowser Output ビューで、
コードを実行したところまでしか表示しないことが良い点。
つまりブレークポイントだと、そこまでしか表示しない。
ウォッチ式とかもある
16.8 その他の応用テクニック
プロファイリング・ユニットテストなどがある
→大規模なウェブシステムを作っていて大量のサーバーリソースを必要とする場合は、調べたほうがいい
17章 日付と時刻
黒本だと第14章が対応する
今までの日付・時刻関数群は、1970年1月1日より前、2036年1月19日より後の日付を扱えなかった
(32ビット符号付き整数値で管理していたから)
今後のことを考えると、DateTimeクラス群を使うほうが良い
DateTimeZoneクラスで、設定をphp.iniファイルから抜き出す場合ini_get()
をつかう
そしてもっと詳しい情報をゲットするにはgetLocation()を使う
$tz = ini_get('date.timezone');
$dtz = new DateTimeZone($tz);
echo "サーバーのタイムゾーン: {$tz}<br>";
foreach ($dtz->getLocation() as Key => $value){
echo "{$key} {$value}<br/>";
}