Xdebug - huyx/1 GitHub Wiki

参考:

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

注意事项

  1. 使用 ssh -N -R ... 执行端口转发
  2. remote_connect_back 和 remote_host 不相容
  • 在局域网内可以使用 remote_connect_back
  • 远程需要使用 remote_host 配合端口转发