PHP Note
category: デバッグ 携帯端末 デバッグの第一歩

Parse error ゼロで始まるPHP

created: 2009-04-11 | modified: 2009-04-11

Parse error は、PHPの構文から外れスクリプトとして成り立っていないことを示すエラーです。PHPの構文から外れてるのでスクリプトが実行されることはありません。「Parse error」がゼロではじめてPHPプログラミングが始まると言ってもいいかもしれません。
私も簡単な修正だけだとつい手を抜いて構文チェックせずにアップして焦ったりタマにしてしまいます。すでに広く知られたことではありますが、自分自身への戒めもこめてPHPの構文チェックの方法をおさらいです。


PHPでPHPスクリプトの構文チェック

PHPスクリプトの構文チェックは、CLI版(コマンドライン版)のPHP一発で確認できます。Windows + PHP5環境なら、PHPのインストールフォルダ/php.exe が、Windows + PHP4環境なら、PHPのインストールフォルダ/cli/php.exe がコマンドライン用の実行ファイルです。これに -l オプションと "ファイル名" を引数に与えれば構文チェック結果が表示されます。

Windowsなら、先ずコマンドプロンプトを開いて php.exe のあるディレクトリに移動します。続いて php.exe -l チェック対象のファイル名 を半角スペースで区切って入力し、Enter でチェックが実行されます。ファイルのパスにスペースを含む場合は必ずダブルクォーテーションでパスを囲みます。以下のようにスペースを含まないパスならダブルクォーテーションは省略できます。

C:\> CD \usr\local\php5
C:\usr\local\php5> php.exe -l "D:\home\sound-uz-jp\public_html\lint.php"

もちろん php.exe に PATH を通しておけば CD \usr\local\php5 は不要です。
参考:PHP5のインストール:4.インストールフォルダにパスを通す

構文エラーが無ければこんな具合に表示されます。

No syntax errors detected in D:\home\sound-uz-jp\public_html\lint.php
C:\usr\local\php5>

もし構文エラーがあれば、ブラウザに表示されるものと同じメッセージが表示されます。
参考:今日のエラーメッセージ:Parse error

これでチェックできるのは Syntax error(構文エラー) だけです。その原因ほとんどは次のような単純なミスです。

  • 対応するカッコが無い
  • 文字列を囲むダブルクォーテーションの閉じ損ない
  • 文字列中のダブルクォーテーションをエスケープしてない
  • 文末の ";" 忘れ、":" とのタイプミス
  • 変数接頭の "$" 忘れ
  • 演算子の評価順序間違い

これだけのことでチェックの意味あるの?と思うかもしれませんが、単純ミスとはいえPHPの構文に慣れない頃はエラーの原因を見つけるのにずいぶん時間がかかってました。あらかじめ構文チェックを行うようになってからは、Parse error かそれ以外かを明確に切り分けることが出来るおかげで、エラー追跡にかかってた時間は半分以下に減ったと感じてます。Parse error チェック 最大のメリットはエラー原因の切り分けによる時間の短縮です。


GUIで構文チェック

すっかりGUIに慣れてしまった今では、コマンドラインラインのタイプが面倒に感じます。でも、あらかじめこのコマンドを記述したバッチファイルを用意しておくだけで、ドラッグ&ドロップによる構文チェックができます。

テキストファイルに以下のように記述し lintPHP.bat などの名前でデスクトップに保存します。バッチファイルの拡張子は必ず .bat がお約束です。赤いところはご自分の環境の php.exe を示すよう書き換えてください。

lintPHP.bat

@echo Off
C:
cd \usr\local\php5
php.exe -l "%1"
pause

あとは、チェックしたいPHPスクリプトファイルを、この lintPHP.bat にドロップするだけです。コマンドプロンプトが開き構文チェック結果が表示されます。もしくは、チェック対象のPHPスクリプトファイルを右クリックし、「アプリケーションから開く→プログラムの選択」、表示されるダイアログで「その他」のボタンをクリックして lintPHP.bat を選び「OK」をクリックでも使えます。こうしておけば次回からは、チェック対象のPHPスクリプトファイルを「右クリック→アプリケーションから開く」で lintPHP が即実行できます。


Peggyで構文チェック

私のお気に入りエディタ Peggy には MocaScript という JavaScript の流れをくむスクリプトが備わっており、これから php.exe を呼び出し、PHPスクリプトを編集したらすぐに構文チェックが行えるようしています。

このスクリプトは Peggy の発売元の MocaScriptライブラリ(php-aid.ms)からダウンロードできます。
ダウンロードしたら、219行目あたりの
var phpexe = "C:\\Program Files\\Zend\\bin\\php.exe";
このパスを自分の環境の php.exe を示すよう書き換え、Anchor\share\script に保存します。あとはPeggyを再起動するか、スクリプトをリロードすれば準備OKです。
スクリプトウィンドウから php-aid > Lint > ファイル内 を呼び出しても良いですし、ショートカットキーを割り当てておけばさらに簡単に構文チェックできます。

他のエディタでも外部コマンドを実行する機能を備えていれば php.exe を使った構文チェックが可能です。


統合開発環境で構文チェック

EclipseNetBeans などのフリーの統合開発環境も、単純なミスを減らす優れた方法です。 Eclipse + PDT の組み合わせなら、ファイル保存の際自動で構文チェックをやてくれますし、強力な補完機能で関数名などのタイプミスも減らせます。

ただ私自身は Peggy の軽快な動作とシンプルさが心地よいので、便利な機能満載の統合開発環境は使うに至ってません。複数でのチーム開発となれば、タスク管理、バージョン管理、コーティーング指針、ドキュメントの整備、テストなど、統一された手法が必要になるので統合開発環境がおおいに活きてくるのだと思います。こうした機会があれば本気で使ってみようと思います。


Parse error "ゼロ"! ここがスタートなので、私も構文チェックを怠らないよう気をつけます。


category: デバッグ 携帯端末 デバッグの第一歩
PHP Note
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新したNote
よく読まれている記事
Yahoo Search

最近更新された掲示板トピックス
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑