PHPの構文チェックの方法について

採用はこちら

PHPで開発をしていると、セミコロンの付け忘れ、括弧の閉じ忘れ、クォーテーションの閉じ忘れなど、ちょっとした文法ミスによってエラーが発生することがあります。

このような文法上のミスを事前に確認する方法が、PHPの構文チェックです。

PHPの構文チェックでは、主に次のような内容を確認できます。

確認内容
セミコロンの付け忘れecho "Hello" の末尾に ; がない
括弧の閉じ忘れiffunction{} が閉じられていない
クォーテーションの閉じ忘れ文字列の "' が閉じられていない
配列や関数の書き方ミスカンマや括弧の不足
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の構文エラーでよくある原因の一つです。

括弧の閉じ忘れ

ifforeachwhilefunctionclass などでは、波括弧 {} を使います。

次のコードは、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

この設定では、appsrc ディレクトリを解析対象にし、解析レベルを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がファイルの終わりまで読み込んだものの、まだ閉じられていない構造がある場合に表示されます。

よくある原因は次の通りです。

原因
} の閉じ忘れifforeachfunctionclass
) の閉じ忘れ関数呼び出し、条件式
] の閉じ忘れ配列
文字列の閉じ忘れ'" が閉じていない

このエラーが出た場合は、ファイルの末尾だけでなく、途中のブロックが正しく閉じられているか確認しましょう。

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
複数ファイルを確認したいfindphp -l を組み合わせる
Laravelを確認したいappconfigdatabaseroutes を対象にする
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の構文チェックの方法についてでした。

最後までお読みいただき、ありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次