LoginSignup
0
0

More than 3 years have passed since last update.

PHP5上級試験/準上級試験の上級合格に挑戦(21) プログラミングPHP第3版 16章~17章

Posted at

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章参照)

→ ステージング環境でのおすすめ設定として

動きが怪しいファイルが有る時、そのファイルにだけ頭に記載すると、エラーを吐き出す。

index.php
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()を使う

index.php
$tz = ini_get('date.timezone');
$dtz = new DateTimeZone($tz);
echo "サーバーのタイムゾーン: {$tz}<br>";

foreach  ($dtz->getLocation() as Key => $value){
 echo "{$key} {$value}<br/>";
}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0