日本語
京都・けいはんな学研都市のソフトウエア開発・Webシステム
株式会社Coolware
けいはんな学研都市

VSCodeでサーバー上のPHPプログラムをステップ実行する方法

読者の皆様んこんにちは。今日はVSCode上でPHPのプログラムをステップ実行する方法をお伝えします。PHPプログラムのデバッグは、コードの品質を向上させ、問題解決の時間を短縮するために重要です。Visual Studio Code(VSCode)は、拡張機能や設定を活用することで、リモートサーバー上でPHPプログラムをステップ実行することができます。本記事では、VSCodeを使ってサーバー上のPHPプログラムをデバッグする手順を詳しく解説します。


1. 必要なツールと環境

以下のツールが必要です:

  • VSCode(最新版を推奨)
  • PHP(デバッグ対象のサーバー上にインストール済み)
  • Xdebug(PHPのデバッグ用拡張機能)
  • VSCodeのPHP拡張機能PHP Debug by Felix Becker

また、以下の条件を満たす必要があります:

  • サーバーがリモートアクセス可能であること。
  • 開発環境とリモートサーバー間でSSH接続が設定されていること。
  • デバッグ対象のコードがサーバー上に配置されていること。

2. VSCodeに必要な拡張機能をインストール

まず、VSCodeに「PHP Debug」という拡張機能をインストールします。

手順:

  1. VSCodeを開き、左サイドバーの「拡張機能(Extensions)」アイコンをクリック。
  2. 検索バーに「PHP Debug」と入力。
  3. PHP Debug(作者:Felix Becker)をインストール。

これで、VSCode上でPHPのデバッグが可能になります。


3. Xdebugのインストールと設定(サーバー側)

PHPのデバッグには、Xdebugという拡張機能が必要です。以下の手順で、サーバーにXdebugをインストールします。

Xdebugのインストール

サーバーにSSHでログイン。

以下のコマンドを実行して、Xdebugをインストールします:

sudo apt-get install php-xdebug # Ubuntu/Debianの場合 
sudo yum install php-xdebug # CentOS/Red Hatの場合

または、PHPのインストールソースに含まれるPECLコマンドを使用:

sudo pecl install xdebug

インストール後、Xdebugの有効性を確認します:

php -m | grep xdebug

php.iniの設定

Xdebugを有効化するため、php.iniを編集します。

php.iniファイルを開く:

sudo nano /etc/php/7.x/cli/php.ini # 適切なパスに置き換えてください

以下の設定を追加または編集:

[Xdebug] 
zend_extension=xdebug.so 
xdebug.mode=debug 
xdebug.start_with_request=yes 
xdebug.client_host=192.168.xxx.xxx ; ローカルマシンのIPアドレス 
xdebug.client_port=9003 ; デフォルトのポート番号 
xdebug.log=/var/log/xdebug.log ; ログファイル(任意)

サーバー上のPHPサービスを再起動:

sudo service apache2 restart # Apacheの場合 sudo service php7.x-fpm restart # PHP-FPMの場

4. VSCodeのデバッグ構成

VSCodeでデバッグ環境を構築します。

デバッグ構成ファイル(launch.json)の設定

  1. 左サイドバーの「実行とデバッグ(Run and Debug)」アイコンをクリック。
  2. 「launch.jsonを作成」を選択し、PHPを選びます。
  3. 以下の設定をlaunch.jsonに追加または編集:
{
	"version": "0.2.0",
	"configurations": [
		{
			"name": "Listen for Xdebug",
			"type": "php",
			"request": "launch",
			"port": 9003,
			"pathMappings": {
				"/var/www/html": "${workspaceFolder}"
			},
			"log": true
		}
	]
}

5. リモートサーバーへのファイル同期

ローカルとリモートのコードが一致している必要があります。ファイル同期には、以下の方法を使用できます:

  • SFTP拡張機能(VSCodeで利用可能)
  • rsyncコマンド(SSH経由で効率的に同期)

rsyncコマンドの例:

rsync -avz --delete -e ssh ./local-folder/ user@remote-server:/var/www/html

6. デバッグの実行

手順:

  1. VSCodeでPHPコードを開き、ブレークポイントを設定します。
  2. サーバー上で対象のPHPスクリプトにアクセスします(例:ブラウザでhttp://example.com/script.phpを開く)。
  3. VSCodeでデバッグセッションを開始します:
    • 左サイドバーの「実行とデバッグ」で「Listen for Xdebug」を選択し、実行。
  4. ブレークポイントで停止し、ステップ実行や変数の確認が可能になります。

7. よくあるトラブルと対処法

Xdebugが動作しない

  • phpinfo()でXdebugが有効になっているか確認。
  • xdebug.logを確認し、問題の詳細を確認。

ブレークポイントで止まらない

  • デバッグ構成のpathMappingsが正しいか確認。
  • サーバーとローカル環境のPHPファイルが一致しているか確認。

ポート競合

  • デフォルトのポート(9003)が他のプロセスで使用されている場合、別のポート番号を設定。

まとめ

VSCodeを使用したリモートサーバー上のPHPプログラムのステップ実行は、Xdebugと適切な設定を組み合わせることで実現できます。この手法を活用することで、効率的にバグを特定し、コードの品質を向上させることができます。