Xdebug - huyx/1 GitHub Wiki
参考:
- https://php-built.com/installing-xdebug-for-php7/
- Xdebug 配合 PHPStorm 的三种工作模式
- PHP Manual - How to change configuration settings -- 在 php.ini 之外修改 php 配置
Ubuntu 上安装 Xdebug
安装 php 开发环境
apt-get install php7.0-dev
下载 Xdebug,然后解压、配置
tar xzvf xdebug-2.4.0.tgz
cd xdebug-2.4.0
phpize
./configure --enable-xdebug
编译、安装:
make
sudo mkdir /usr/lib/php/modules
sudo cp modules/xdebug.so /usr/lib/php/modules/
编辑 php.ini
[Xdebug]
zend_extension=/usr/lib/php/modules/xdebug.so
xdebug.remote_enable = 1
xdebug.remote_host = localhost
xdebug.remote_port = 9000
xdebug.idekey = PHPSTORM
# xdebug.remote_connect_back = 1
# xdebug.scream = 1
查看配置是否生效
php -i | grep xdebug
安装配置 Xdebug helper
在 Xdebug helper 图标上点击右键,选择“选项”:
- IDE key 修改为 'PHPSTORM', 点击 "Save"
允许调试,在 Xdebug helper 图标上点击左键,选择 Debug 即可。
PHP Storm 远程调试
建立 ssh 隧道:
ssh -N -R 9000:localhost:9000 username@host
说明:
-N
表示只进行端口转发,不执行远程命令-R
反向端口转发
PHPStoram 中选择 "Run/Start Listening for PHP Debug Connections"。
设置断点开始调试吧。
远程调试中的坑
如果服务器和开发环境在同一个局域网内,remote_connect_back 可能是一个不错的选择。
但是如果不再同一个局域网内,服务器无法直接访问,则设置了 remote_connect_back 就掉坑里了,因为 Xdebug 并不会连接 remove_host 指定的服务器,而是直接连接发起 http 请求的计算机。
为不同的虚拟主机设置不同的远程端口
在 apache2 的配置文件里面(虚拟主机下面),添加:
php_value xdebug.remote_port 9001
说明:
- 也可以在 .htaccess 中使用 php_value,但要在配置文件里有
AllowOverride Options
注意事项
- 使用
ssh -N -R ...
执行端口转发 - remote_connect_back 和 remote_host 不相容
- 在局域网内可以使用 remote_connect_back
- 远程需要使用 remote_host 配合端口转发