PHPで開発をしていると、セミコロンの付け忘れ、括弧の閉じ忘れ、クォーテーションの閉じ忘れなど、ちょっとした文法ミスによってエラーが発生することがあります。
このような文法上のミスを事前に確認する方法が、PHPの構文チェックです。
PHPの構文チェックでは、主に次のような内容を確認できます。
| 確認内容 | 例 |
|---|---|
| セミコロンの付け忘れ | echo "Hello" の末尾に ; がない |
| 括弧の閉じ忘れ | if や function の {} が閉じられていない |
| クォーテーションの閉じ忘れ | 文字列の " や ' が閉じられていない |
| 配列や関数の書き方ミス | カンマや括弧の不足 |
| PHPバージョンに合わない構文 | 古いPHPで新しい構文を使っている |
PHPの構文チェックで最も基本になるのは、PHP本体に用意されている php -l コマンドです。
PHPの構文チェックは php -l で行う
PHPファイルの構文チェックは、コマンドラインから次のように実行できます。
php -l ファイル名.php
たとえば、index.php の構文を確認したい場合は、次のように実行します。
php -l index.php
構文に問題がなければ、次のように表示されます。
No syntax errors detected in index.php
一方、構文エラーがある場合は、エラー内容と行番号が表示されます。
PHP Parse error: syntax error, unexpected token "}" in index.php on line 12
このように、php -l を使うと、PHPファイルを実際に実行する前に、文法上の問題を確認できます。
php -l の特徴
php -l の -l は、lintを意味します。
lintとは、プログラムの文法や書き方を確認するためのチェックのことです。
php -l は、PHPファイルを実際に実行するのではなく、PHPとして構文が正しいかどうかを確認します。
そのため、データベースを更新したり、メールを送信したり、外部APIにアクセスしたりする処理は実行されません。
たとえば、次のようなコードがあるとします。
<?php
echo "Hello World"
このコードは、最後のセミコロンが抜けています。
このファイルに対して構文チェックを実行すると、エラーが表示されます。
php -l index.php
正しくは、次のようにセミコロンを付けます。
<?php
echo "Hello World";
php -l は、こうした単純な文法ミスを素早く見つけるのに便利です。
php -l を使うときの注意点
php -l は便利ですが、指定したファイル単体の構文を確認するコマンドです。
たとえば、次のような index.php があるとします。
<?php
require_once 'broken.php';
echo 'OK';
この場合、index.php 自体の構文が正しければ、php -l index.php は通る可能性があります。
しかし、読み込まれている broken.php の中に構文エラーがあっても、index.php だけをチェックした場合は、そのエラーを検出できないことがあります。
そのため、プロジェクト全体の構文を確認したい場合は、1ファイルだけではなく、すべてのPHPファイルに対して php -l を実行する必要があります。
複数のPHPファイルをまとめて構文チェックする方法
実際の開発では、1つのPHPファイルだけでなく、プロジェクト全体をまとめてチェックしたい場面が多くあります。
Linux、macOS、WSL、Git Bashなどでは、次のように find コマンドと組み合わせて確認できます。
find . -name "*.php" -print0 | xargs -0 -n1 php -l
このコマンドは、現在のディレクトリ以下にある .php ファイルを探し、それぞれに対して php -l を実行します。
もう少しシンプルに書く場合は、次のような方法もあります。
find . -name "*.php" -exec php -l {} \;
ただし、ファイル数が多い場合は、xargs を使うほうが効率的です。
また、vendor ディレクトリはComposerでインストールされた外部ライブラリが入る場所なので、通常はチェック対象から除外することが多いです。
find . -name "*.php" -not -path "./vendor/*" -exec php -l {} \;
LaravelやWordPressなどのプロジェクトでは、対象ディレクトリを絞ると、より実用的にチェックできます。
エラーがあるファイルだけを表示する方法
複数ファイルを構文チェックすると、問題がないファイルにも次のようなメッセージが表示されます。
No syntax errors detected in example.php
ファイル数が多いと、正常なメッセージが多くなり、エラーを見つけにくくなります。
エラーだけを確認したい場合は、次のように正常メッセージを除外できます。
find . -name "*.php" -print0 | xargs -0 -n1 php -l 2>&1 | grep -v "No syntax errors detected"
これにより、構文エラーがあるファイルだけを見つけやすくなります。
WindowsでPHPの構文チェックをする方法
Windowsでも、PHPがインストールされていてパスが通っていれば、コマンドプロンプトやPowerShellから構文チェックできます。
php -l index.php
PHPコマンドが使えるかどうかは、次のコマンドで確認できます。
php -v
PHPのバージョン情報が表示されれば、PHPコマンドを使える状態です。
もし次のようなエラーが表示される場合は、PHPがインストールされていないか、PHPの実行ファイルにパスが通っていません。
'php' is not recognized as an internal or external command
XAMPPを使っている場合は、PHPの実行ファイルを直接指定して確認することもできます。
C:\xampp\php\php.exe -l index.php
PowerShellで複数のPHPファイルをまとめてチェックする場合は、次のように実行できます。
Get-ChildItem -Recurse -Filter *.php | ForEach-Object { php -l $_.FullName }
Docker環境でPHPの構文チェックをする方法
DockerでPHPを動かしている場合、ホスト側にPHPが入っていなくても、コンテナ内のPHPで構文チェックできます。
たとえば、PHPコンテナ名が app の場合は、次のように実行します。
docker compose exec app php -l index.php
複数ファイルをまとめてチェックする場合は、コンテナ内で find コマンドを実行します。
docker compose exec app sh -c 'find . -name "*.php" -not -path "./vendor/*" -exec php -l {} \;'
Dockerを使うメリットは、実際の開発環境や本番環境に近いPHPバージョンでチェックできることです。
PHPはバージョンによって使える構文が異なるため、構文チェックはできるだけ本番環境と同じPHPバージョンで行うのが安全です。
PHPの構文チェックでよく見つかるエラー
PHPの構文チェックでは、さまざまな文法ミスを見つけることができます。
代表的なエラーを見ていきましょう。
セミコロンの付け忘れ
PHPでは、多くの文の末尾にセミコロンが必要です。
次のコードは、echo の末尾にセミコロンがありません。
<?php
echo "こんにちは"
echo "PHP";
正しくは次のように書きます。
<?php
echo "こんにちは";
echo "PHP";
セミコロンの付け忘れは、PHPの構文エラーでよくある原因の一つです。
括弧の閉じ忘れ
if、foreach、while、function、class などでは、波括弧 {} を使います。
次のコードは、if の閉じ括弧がありません。
<?php
if ($is_admin) {
echo "管理者です";
正しくは次のようにします。
<?php
if ($is_admin) {
echo "管理者です";
}
括弧の閉じ忘れがあると、unexpected end of file のようなエラーが表示されることがあります。
クォーテーションの閉じ忘れ
文字列を扱うときは、シングルクォート ' またはダブルクォート " で囲みます。
次のコードは、ダブルクォートが閉じられていません。
<?php
$title = "PHPの構文チェック;
echo $title;
正しくは次のようにします。
<?php
$title = "PHPの構文チェック";
echo $title;
クォーテーションの閉じ忘れは、エラーの原因がわかりにくくなることもあります。
カンマの付け忘れ
配列や関数の引数では、要素をカンマで区切る必要があります。
次のコードは、配列の1つ目の要素の後にカンマがありません。
<?php
$user = [
'name' => 'Tanaka'
'email' => 'tanaka@example.com',
];
正しくは次のように書きます。
<?php
$user = [
'name' => 'Tanaka',
'email' => 'tanaka@example.com',
];
配列や引数の数が多い場合、カンマの抜けは見落としやすいので注意が必要です。
PHPのバージョン違いによる構文エラー
PHPは、バージョンによって使える構文が異なります。
新しいPHPでは使える構文でも、古いPHPでは構文エラーになることがあります。
たとえば、ローカル環境ではPHP 8.3を使っていて、本番環境ではPHP 8.0を使っている場合、ローカルでは問題なくても本番ではエラーになる可能性があります。
そのため、構文チェックはできるだけ本番環境と同じPHPバージョンで行うことが重要です。
特に、レンタルサーバーやWordPress案件では、ローカル環境と本番サーバーのPHPバージョンが異なることがあります。
開発前に、使用するPHPバージョンを確認しておくと安心です。
php -l でチェックできること
php -l で確認できるのは、主にPHPの文法上の問題です。
具体的には、次のようなエラーを検出できます。
| チェックできる内容 | 例 |
|---|---|
| セミコロンの付け忘れ | 文末に ; がない |
| 括弧の閉じ忘れ | {}、()、[] が閉じられていない |
| クォートの閉じ忘れ | ' や " が閉じられていない |
| 構文として不正な書き方 | PHPが解釈できない記述 |
| バージョンに合わない構文 | 使用中のPHPでは使えない構文 |
たとえば、次のようなコードは構文エラーになります。
<?php
if ($flag) {
echo "OK";
閉じ括弧 } が不足しているため、PHPとして正しく解釈できません。
php -l でチェックできないこと
php -l は構文チェック用のコマンドなので、文法として成立しているコードについては、問題を検出できない場合があります。
たとえば、次のコードは未定義変数を使っています。
<?php
echo $undefined_variable;
このコードは、実行時には警告や不具合の原因になる可能性があります。
しかし、PHPの構文としては成立しているため、php -l では基本的に検出できません。
また、次のようなコードも、構文上は正しいため、php -l だけでは問題を見つけられません。
<?php
$result = add_numbers("abc", []);
関数が数値を期待しているのに文字列や配列を渡している場合でも、構文として正しければ php -l は通ることがあります。
php -l で検出できない代表的な問題は、次の通りです。
| 検出しにくい問題 | 内容 |
|---|---|
| 未定義変数 | 存在しない変数を使っている |
| 型の不一致 | 数値を期待する場所に文字列を渡している |
| 存在しないメソッド | 定義されていないメソッドを呼び出している |
| 存在しないクラス | 読み込まれていないクラスを使っている |
| ロジックの誤り | 条件分岐や計算処理が意図と違う |
| セキュリティ上の問題 | エスケープ漏れ、入力値検証不足など |
このような問題を見つけるには、PHPStanやPsalmなどの静的解析ツールを併用します。
PHPStanでより高度なチェックを行う
PHPStanは、PHPコードを実行せずに、型の不一致や未定義メソッドなどを検出できる静的解析ツールです。
php -l が文法上のミスを確認するのに対して、PHPStanは「文法としては正しいが、バグになる可能性があるコード」を見つけるのに役立ちます。
Composerを使っているプロジェクトでは、次のようにインストールできます。
composer require --dev phpstan/phpstan
基本的な実行方法は次の通りです。
vendor/bin/phpstan analyse
特定のディレクトリを解析する場合は、次のように指定します。
vendor/bin/phpstan analyse src
Laravelであれば、次のように app ディレクトリを対象にすることが多いです。
vendor/bin/phpstan analyse app
PHPStanでは、たとえば次のような問題を検出できます。
| 検出できる問題 | 例 |
|---|---|
| 存在しないメソッドの呼び出し | $user->getNames() が定義されていない |
| 型の不一致 | int を期待する関数に array を渡している |
| 戻り値の型ミス | string を返す関数で null を返している |
| 未定義プロパティ | $user->nickname が定義されていない |
| 到達不能コード | return の後に処理が書かれている |
構文チェックだけでは見つからない問題を検出できるため、実務ではPHPStanの導入がおすすめです。
PHPStanの設定ファイルを作成する
PHPStanでは、phpstan.neon という設定ファイルを作成できます。
たとえば、次のように記述します。
parameters:
level: 5
paths:
- app
- src
この設定では、app と src ディレクトリを解析対象にし、解析レベルを5に設定しています。
設定ファイルを作成しておけば、次のコマンドだけで解析できます。
vendor/bin/phpstan analyse
PHPStanには解析レベルがあります。
レベルを上げるほど厳しくチェックされます。
既存のプロジェクトにいきなり高いレベルで導入すると、大量のエラーが出ることがあります。
そのため、最初は低めのレベルから始め、少しずつ厳しくしていくと導入しやすくなります。
Psalmで静的解析を行う
Psalmも、PHP向けの静的解析ツールです。
PHPStanと同じように、型の不一致、未定義メソッド、戻り値の不整合などを検出できます。
Composerでインストールする場合は、次のように実行します。
composer require --dev vimeo/psalm
初期設定を作成します。
vendor/bin/psalm --init
解析を実行します。
vendor/bin/psalm
ただし、Psalmはバージョンによって必要なPHPバージョンが異なります。
最新版のPsalmでは、比較的新しいPHPバージョンが必要になる場合があります。
古いPHP環境のプロジェクトでは、現在のPHPバージョンに対応したPsalmのバージョンを指定してインストールする必要があります。
PHPStanとPsalmはどちらも静的解析ツールですが、どちらか一方を導入するだけでも、構文チェックだけでは見つけにくい問題を発見しやすくなります。
PHPCSでコーディング規約をチェックする
PHPCSは、PHP_CodeSnifferの略で、PHPコードが指定したコーディング規約に沿っているかを確認するツールです。
php -l は構文チェック、PHPStanやPsalmは静的解析、PHPCSは主にコーディング規約チェックに使います。
Composerでインストールする場合は、次のように実行します。
composer require --dev squizlabs/php_codesniffer
基本的な実行方法は次の通りです。
vendor/bin/phpcs src
PSR-12に沿って確認する場合は、次のように指定します。
vendor/bin/phpcs --standard=PSR12 src
PHPCSでは、次のような内容を確認できます。
| チェック項目 | 内容 |
|---|---|
| インデント | スペース数やタブの使い方 |
| 改行 | クラスや関数の前後の空行 |
| 命名規則 | クラス名、関数名、変数名のルール |
| 括弧の位置 | { の位置や改行 |
| PSR準拠 | PSR-12などの規約に沿っているか |
PHPCSは厳密には構文チェック専用のツールではありません。
ただし、設定によってはPHPの組み込みlinterを使った構文チェックも行えます。
単純に文法だけを確認したい場合は php -l、コードの書き方や規約まで確認したい場合はPHPCSを使うとよいでしょう。
VS CodeでPHPの構文チェックを行う
VS Codeを使っている場合は、エディタ上でPHPの構文エラーを確認できます。
そのためには、ローカル環境にPHPがインストールされている必要があります。
PHPのパスを確認するには、次のコマンドを実行します。
php -v
VS CodeでPHPの実行ファイルを指定する場合は、settings.json に次のように記述します。
WindowsでXAMPPを使っている場合の例です。
{
"php.validate.executablePath": "C:\\xampp\\php\\php.exe"
}
MacでHomebrewのPHPを使っている場合は、次のようなパスになることがあります。
{
"php.validate.executablePath": "/opt/homebrew/bin/php"
}
VS Code上で構文チェックできるようにしておくと、コマンドを実行する前に文法ミスへ気づきやすくなります。
PhpStormでPHPの構文チェックを行う
PhpStormはPHP開発に特化したIDEです。
PHPの構文エラーだけでなく、型の問題、未定義メソッド、未使用変数などもエディタ上で確認できます。
PhpStormでは、次のようなチェックが可能です。
| チェック内容 | 例 |
|---|---|
| 構文エラー | セミコロン忘れ、括弧の閉じ忘れ |
| 型の問題 | 引数や戻り値の型不一致 |
| 未使用コード | 使われていない変数やメソッド |
| 未定義メソッド | 存在しないメソッドの呼び出し |
| PHPバージョン差異 | 指定バージョンでは使えない構文 |
PhpStormを使う場合は、プロジェクトのPHPバージョン設定を本番環境に合わせておくことが大切です。
本番環境と異なるPHPバージョンで開発していると、ローカルでは問題ないコードが本番ではエラーになることがあります。
Composer scriptsに構文チェックを登録する
毎回長いコマンドを入力するのが面倒な場合は、composer.json にチェック用コマンドを登録できます。
たとえば、次のように設定します。
{
"scripts": {
"lint": "find . -name '*.php' -not -path './vendor/*' -exec php -l {} \\;",
"phpstan": "phpstan analyse",
"phpcs": "phpcs --standard=PSR12 src"
}
}
登録後は、次のように実行できます。
composer lint
composer phpstan
composer phpcs
ただし、この例はLinux、macOS、WSL、Git BashなどのUnix系シェルを前提にしています。
WindowsのPowerShellやコマンドプロンプトでは、そのまま動かない場合があります。
Windows環境では、PowerShell用のコマンドに書き換えるか、Composer scriptsではなく別のタスクランナーを使う方法もあります。
LaravelでPHPの構文チェックをする方法
Laravelでも、基本的な構文チェックは通常のPHPと同じです。
特定のファイルを確認する場合は、次のように実行します。
php -l app/Http/Controllers/HomeController.php
Laravelプロジェクト全体を確認する場合は、対象ディレクトリを絞ると実用的です。
find app config database routes -name "*.php" -exec php -l {} \;
Laravelでは、次のようなディレクトリをチェック対象にすることが多いです。
| ディレクトリ | 内容 |
|---|---|
app | アプリケーション本体のコード |
config | 設定ファイル |
database | マイグレーションやシーダー |
routes | ルーティング設定 |
Laravelでは、構文チェックに加えてPHPStanやLarastanを使うと、より高度な解析ができます。
Larastanは、Laravel向けにPHPStanを拡張するためのツールです。
composer require --dev larastan/larastan
導入後は、PHPStanを使ってLaravelのコードを解析できます。
vendor/bin/phpstan analyse
Laravelはファサードやマジックメソッドなど、通常のPHPより解析が難しい仕組みを多く使います。
そのため、Laravel案件では通常のPHPStanだけでなく、Larastanの導入も検討するとよいでしょう。
WordPressでPHPの構文チェックをする方法
WordPressテーマやプラグインでも、PHPの構文チェックは php -l で行えます。
テーマの functions.php を確認する場合は、次のように実行します。
php -l wp-content/themes/your-theme/functions.php
テーマ全体を確認する場合は、次のようにします。
find wp-content/themes/your-theme -name "*.php" -exec php -l {} \;
プラグインを確認する場合は、対象プラグインのディレクトリを指定します。
find wp-content/plugins/your-plugin -name "*.php" -exec php -l {} \;
WordPress案件では、WordPress本体や他社製プラグインまでまとめてチェックすると、確認対象が広くなりすぎることがあります。
通常は、自分が開発しているテーマやプラグインに対象を絞るのがおすすめです。
また、WordPress開発では、構文チェックに加えてWordPress Coding Standardsを使ったPHPCSチェックも有効です。
WordPress Coding Standardsを使うと、WordPress特有の関数利用、エスケープ、命名規則、セキュリティ面の指摘を受けやすくなります。
Gitのコミット前に構文チェックを自動実行する
構文エラーを含んだコードをコミットしないようにするには、Gitのpre-commit hookを使う方法があります。
簡易的には、.git/hooks/pre-commit に次のような内容を記述します。
#!/usr/bin/env bash
while IFS= read -r -d '' FILE; do
php -l "$FILE" || exit 1
done < <(git diff --cached --name-only -z --diff-filter=ACM -- '*.php')
実行権限を付けます。
chmod +x .git/hooks/pre-commit
これで、コミット対象に含まれるPHPファイルに構文エラーがある場合、コミットを止めることができます。
Git hookを使うと、構文エラーをリポジトリに入れてしまうリスクを減らせます。
GitHub Actionsで構文チェックを自動化する
チーム開発では、GitHub ActionsなどのCIで構文チェックを自動化すると便利です。
たとえば、.github/workflows/php-lint.yml を作成し、次のように記述します。
name: PHP Lint
on:
push:
pull_request:
jobs:
php-lint:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.2'
- name: Lint PHP files
run: find . -name "*.php" -not -path "./vendor/*" -exec php -l {} \;
これにより、pushやpull requestのたびにPHPの構文チェックが実行されます。
Laravelの場合は、対象ディレクトリを絞ってもよいでしょう。
- name: Lint PHP files
run: find app config database routes -name "*.php" -exec php -l {} \;
WordPressテーマの場合は、テーマディレクトリに限定すると確認しやすくなります。
- name: Lint PHP theme files
run: find wp-content/themes/your-theme -name "*.php" -exec php -l {} \;
CIで構文チェックを行う場合も、本番環境に合わせたPHPバージョンを指定することが重要です。
よくあるエラーメッセージの見方
PHPの構文チェックでは、エラーメッセージを正しく読むことが大切です。
代表的なエラーメッセージを見ていきましょう。
unexpected token
PHP Parse error: syntax error, unexpected token "}" in index.php on line 20
unexpected token は、PHPが想定していない記号やキーワードが出てきたという意味です。
たとえば、次のような原因が考えられます。
| 原因 | 内容 |
|---|---|
| 閉じ括弧が多い | } が余分にある |
| セミコロンがない | 前の行の文が終わっていない |
| カンマがない | 配列や引数の区切りがない |
| 括弧の対応がずれている | {}、()、[] の数が合わない |
エラーが表示された行だけでなく、その直前の行も確認することが大切です。
unexpected end of file
PHP Parse error: syntax error, unexpected end of file
unexpected end of file は、PHPがファイルの終わりまで読み込んだものの、まだ閉じられていない構造がある場合に表示されます。
よくある原因は次の通りです。
| 原因 | 例 |
|---|---|
} の閉じ忘れ | if、foreach、function、class |
) の閉じ忘れ | 関数呼び出し、条件式 |
] の閉じ忘れ | 配列 |
| 文字列の閉じ忘れ | ' や " が閉じていない |
このエラーが出た場合は、ファイルの末尾だけでなく、途中のブロックが正しく閉じられているか確認しましょう。
unexpected variable
PHP Parse error: syntax error, unexpected variable "$name"
unexpected variable は、PHPが変数を想定していない場所で変数が出てきた場合に表示されます。
よくある原因は、直前の行のセミコロン忘れです。
<?php
$message = "Hello"
$name = "Tanaka";
この場合、エラーが $name の行に表示されることがあります。
しかし、実際の原因はその前の行にあるセミコロン忘れです。
正しくは次のようにします。
<?php
$message = "Hello";
$name = "Tanaka";
構文エラーでは、エラー行そのものではなく、直前の行や前のブロックに原因があることも多いです。
オンラインのPHP構文チェックツールを使う場合の注意点
PHPの構文チェックは、オンラインツールでも行える場合があります。
ただし、業務コードや顧客情報を含むコードをオンラインツールに貼り付けるのは避けたほうが安全です。
特に、次のようなコードはオンラインツールに貼り付けないようにしましょう。
| 貼り付けを避けたいコード | 理由 |
|---|---|
| 顧客サイトのコード | 機密情報が含まれる可能性がある |
| WordPressテーマやプラグイン | 独自ロジックが含まれる可能性がある |
| APIキーを含むコード | 外部サービスの認証情報が漏れる可能性がある |
| DB接続情報を含むコード | データベース情報が漏れる可能性がある |
| 未公開サービスのコード | 事業上の機密情報になる可能性がある |
オンラインツールは、学習用の短いサンプルコードを確認する程度にとどめるのがおすすめです。
実務のコードは、ローカル環境、Docker環境、CI環境でチェックするほうが安全です。
実務でおすすめのPHP構文チェック手順
実務では、1つの方法だけに頼るのではなく、複数のチェック方法を組み合わせるのがおすすめです。
エディタでリアルタイムに確認する
VS CodeやPhpStormを使い、編集中に構文エラーを確認できるようにします。
入力中や保存時にエラーが表示されるため、単純なミスを早い段階で見つけられます。
変更したファイルを php -l で確認する
修正したファイルに対して、次のように構文チェックを実行します。
php -l path/to/file.php
小さな修正であれば、まずは変更ファイルだけを確認すると効率的です。
プロジェクト全体をまとめて確認する
リリース前や大きな修正後には、プロジェクト全体をチェックします。
find . -name "*.php" -not -path "./vendor/*" -exec php -l {} \;
LaravelやWordPressでは、対象ディレクトリを絞ると確認しやすくなります。
PHPStanやPsalmで静的解析する
構文チェックだけでは、型の不一致や未定義メソッドまでは十分に検出できません。
そのため、PHPStanやPsalmを使って、より深い問題を確認します。
vendor/bin/phpstan analyse
または、
vendor/bin/psalm
PHPCSでコーディング規約を確認する
チーム開発では、PHPCSを使ってコードの書き方を統一すると、レビューの負担を減らせます。
vendor/bin/phpcs --standard=PSR12 src
WordPress開発では、WordPress Coding Standardsの導入も検討するとよいでしょう。
CIで自動チェックする
GitHub ActionsなどのCIを使えば、pushやpull requestのたびに構文チェックを自動実行できます。
これにより、構文エラーを含んだコードが本番環境に反映されるリスクを減らせます。
PHP構文チェックのおすすめの使い分け
PHPの構文チェック方法は、目的に応じて使い分けると効果的です。
| 目的 | おすすめの方法 |
|---|---|
| 1ファイルだけ確認したい | php -l ファイル名.php |
| 複数ファイルを確認したい | find と php -l を組み合わせる |
| Laravelを確認したい | app、config、database、routes を対象にする |
| WordPressテーマを確認したい | テーマディレクトリに絞って php -l |
| 型や未定義メソッドも見たい | PHPStanまたはPsalm |
| コーディング規約も見たい | PHPCS |
| チームで自動化したい | Git hook、GitHub Actions、CI |
| 本番環境との差を減らしたい | Dockerや本番と同じPHPバージョンで確認する |
最低限覚えておきたいコマンド
PHPの構文チェックで最低限覚えておきたいコマンドは、次の3つです。
PHPが使えるか確認するコマンドです。
php -v
1つのPHPファイルを構文チェックするコマンドです。
php -l index.php
複数のPHPファイルをまとめて構文チェックするコマンドです。
find . -name "*.php" -not -path "./vendor/*" -exec php -l {} \;
まずはこの3つを覚えておけば、基本的なPHPの構文チェックには対応できます。
まとめ
PHPの構文チェックで最も基本になるのは、次のコマンドです。
php -l ファイル名.php
このコマンドを使うと、PHPファイルを実行せずに、文法上の問題を確認できます。
セミコロンの付け忘れ、括弧の閉じ忘れ、クォーテーションの閉じ忘れ、配列の書き方ミスなどを見つけるのに有効です。
ただし、php -l はあくまで構文チェック用のコマンドです。
未定義変数、型の不一致、存在しないメソッド呼び出し、ロジック上の誤りまでは基本的に検出できません。
そのため、実務では次のように複数の方法を組み合わせるのがおすすめです。
| チェック内容 | 使用する方法 |
|---|---|
| 構文エラー | php -l |
| 型や未定義メソッド | PHPStan、Psalm |
| コーディング規約 | PHPCS |
| 編集中のミス | VS Code、PhpStorm |
| チームでの自動チェック | Git hook、GitHub Actions、CI |
特に安全な流れは、エディタで即時確認し、php -l で構文チェックを行い、PHPStanやPsalmで静的解析を行い、CIで自動チェックする という方法です。
この流れを整えておくと、単純な文法ミスだけでなく、実行時の不具合につながりやすい問題も早い段階で発見しやすくなります。
以上、PHPの構文チェックの方法についてでした。
最後までお読みいただき、ありがとうございました。









