---
slug: "php-remote-debug"
title: "PHP SSHの逆ポートフォワードごしにリモートデバッグする"
description: "本番サーバ等、離れた環境にある PHP をリモートデバッグする場合。"
url: "https://www.ytyng.com/blog/php-remote-debug"
publish_date: "2017-04-28T03:25:22Z"
created: "2017-04-28T03:25:22Z"
updated: "2026-02-27T05:09:35.568Z"
categories: ["PHP"]
keywords: ""
featured_image_url: "https://media.ytyng.com/resize/20230812/c5e41730419d4697b6e2a75ca275ddec.png.webp?width=768"
has_video: false
has_music: false
video_urls: []
music_urls: []
lang: "ja"
---

# PHP SSHの逆ポートフォワードごしにリモートデバッグする

<p>本番サーバ等、離れた環境にある PHP をリモートデバッグする場合。</p>
<p>開発用の PC は社内 LAN の中にあり、外からは直接アクセスできないとします。</p>
<p>その場合、SSH で逆向きのトンネルを作り、本番サーバ&rarr;ローカルPC と通信させます。</p>
<p></p>
<p>本番のPHPのxdebugの設定ファイル</p>
<p>例: /etc/php/5.6/apache2/conf.d/20-xdebug.ini</p>
<pre>[xdebug]<br />zend_extension=xdebug.so<br /><br />xdebug.remote_enable=1<br />xdebug.remote_port="9000"<br />xdebug.profiler_enable=0<br />xdebug.profiler_output_dir="/tmp"<br />xdebug.max_nesting_level=1000<br />xdebug.idekey = "PHPSTORM"</pre>
<p>phpinfo() した時、Scan this dir for additional .ini files&nbsp;&nbsp; &nbsp;/etc/php/5.6/apache2/conf.d のような表示が出るのでそこから設定ファイルを探す</p>
<p></p>
<p>上記の設定の場合、デバッグ時 (URLのGET引数に ?XDEBUG_SESSION_START=12345&nbsp; みたいに入ってる時) にローカルホストの 9000 ポートに接続するようになってます。</p>
<p></p>
<p>開発用ローカルPCで</p>
<pre>$ ssh -R 127.0.0.1:9000:127.0.0.1:9000 user@example.com</pre>
<p>として、本番サーバの9000 ポートをローカルの 9000ポートにトンネルします。</p>
<p></p>
<p>そして、PHPStorm でデバッグを実行すると、ブレイクポイントでブレイクしてデバッグできます。</p>
<p>サーバ設定のパスマッピングをちゃんと作成してないとブレイクしないのでご注意ください。</p>
<p></p>
<p>ちなみに、私はデプロイに Python の Fabric を使っているため、このようなコマンドでトンネルを作ります。</p>
<pre>@runs_once<br />def xdebug():<br />&nbsp;&nbsp;&nbsp; """<br />&nbsp;&nbsp;&nbsp; xdebug用のSSHトンネルを作ります<br />&nbsp;&nbsp;&nbsp; """<br />&nbsp;&nbsp;&nbsp; local('ssh -R 127.0.0.1:9000:127.0.0.1:9000 {}@{}'.format(env.user, env.hosts[0]))</pre>
<p></p>
