Xdebug+PhpStorm 遠程調試

開發環境:

本地 Windows10 平常開發使用的環境 裝有PHPStorm 

遠程主機 Linux  服務器 裝php-fpm/nginx等全部開發依賴環境

本地能夠訪問遠程主機 但遠程主機沒法訪問本地 
複製代碼

目的

遠程調試(remote debug)在windows本地環境下 調試遠程服務器(Linux)上的代碼
複製代碼

問題

以前一直認爲 php-xdebug 的擴展的remote_debug 只可以支持本地環境下調試

其實緣由是沒有準備好調試環境  (遠程的服務器上沒法訪問到本地的調試端口 須要經過ssh隧道端口映射 創建鏈接)

其client 和 server 的對應關係以下圖 
複製代碼

xdebug client 和 server 的對應關係以下圖

本地的PHPSTORM 在開啓斷點服務後 會打開一個的調試服務 (默認端口爲 9000)php

用於與服務器進經過DBGP行通訊nginx

但本地環境是處於局域網內 服務器沒法經過IP 直接訪問IDE的調試端口web

步驟

1. 遠程主機上安裝 php_xdebug 擴展

2. 修改配置文件php.ini 並重啓php-fpm

phpinfo信息

[xdebug]windows

zend_extension=/webser/soft/php72/lib/php/extensions/xdebug.sobash

xdebug.remote_enable=1服務器

xdebug.remote_port=9001session

xdebug.remote_host=127.0.0.1php7

xdebug.remote_log=/var/log/php-xdebug.logssh

xdebug.idekey="PHPSTORM"ide

而後查看phpinfo信息 檢查配置是否生效

3. 本地與遠程主機創建ssh隧道>端口轉移 使遠程主機可以訪問到IDE的9001端口

遠程主機上鍵入telnet命令# telnet 127.0.0.1 9001 檢查是否可以訪問9001 端口

(這裏由於端口衝突 默認9000 改成9001 php.ini 與 PHPSTORM配置 保持一致)

4. PHPSTORM debug配置

添加Server 並配置IDE KEY (需與php.ini 中保持一致)

最後點擊綠色的甲蟲和電話筒 打開調試 並打上斷點

Run (運行) > Break at first line in PHP scripts 設置php斷點在腳本第一行

5. 安裝xdebug_helper 或者 在請求中攜帶 IDEKey 便可觸發調試

擴展: 當咱們在須要再命令行模式中啓用xdebug 時 能夠經過如下方式 配置session_key

## When running the script from the command line 
## you need to set an environment variable, like:
Linux 環境中:
export XDEBUG_CONFIG="idekey=session_name"
php myscript.php

Windows 環境中:
set XDEBUG_CONFIG="idekey=session_name"
複製代碼
相關文章
相關標籤/搜索