xdebug

CentOS7 使用 webtatic 安装的 php7.0 为默认版本(一个版本)。

Vagrant 虚拟机的 IP 为:192.168.1.88
PHPStorm 的开发机 IP 为 192.168.1.155

安装 xdebug

➜  ~ yum search xdebug

php70w-pecl-xdebug.x86_64 : PECL package for debugging PHP scripts
php71w-pecl-xdebug.x86_64 : PECL package for debugging PHP scripts
php72w-pecl-xdebug.x86_64 : PECL package for debugging PHP scripts

  Name and summary matches only, use "search all" for everything.
➜  ~ sudo yum install php70w-pecl-xdebug.x86_64 -y
➜  ~ sudo systemctl restart php-fpm.service

然后通过 info.php 查看 xdebug 是否已经生效。

配置 xdebug

先查看下 xdebug 的当前配置:

➜  ~ more /etc/php.d/xdebug.ini 
; Enable xdebug extension module
zend_extension=/usr/lib64/php/modules/xdebug.so

添加远程配置:

xdebug.idekey = "PHPSTORM"
xdebug.remote_handler="dbgp"

xdebug.remote_enable = 1
xdebug.default_enable = 1
xdebug.remote_autostart = 1

xdebug.remote_log = /var/log/xdebug.log

https://xdebug.org/docs/remote

With a static IP/single developer

config

  • The IP of the server is 10.0.1.2 with HTTP on port 80
  • The IDE is on IP 10.0.1.42, so xdebug.remote_host is set to 10.0.1.42
  • The IDE listens on port 9000, so xdebug.remote_port is set to 9000
  • The HTTP request is started on the machine running the IDE
  • Xdebug connects to 10.0.1.42:9000
  • Debugging runs, HTTP Response provided
xdebug.remote_host=192.168.1.155
xdebug.remote_port=9000

With an unknown IP/multiple developers

xdebug.remote_connect_back = 1
xdebug.remote_port=9000

确定

; Enable xdebug extension module
zend_extension=/usr/lib64/php/modules/xdebug.so

xdebug.idekey = "PHPSTORM"
xdebug.remote_handler="dbgp"

xdebug.remote_enable = 1
xdebug.remote_autostart = 1
xdebug.remote_log = /vagrant_data/phplivechat/data/xdebug.log

xdebug.remote_host =192.168.1.155
;xdebug.remote_connect_back = 1
xdebug.remote_port=9001

注意这里的xdebug.idekey的值,我们将会使用在 Vagrant 和 浏览器中配置的 IDE key

保存配置后,重启 PHP-FPM:

➜  ~ sudo systemctl restart php-fpm.service

xdebug

配置 PHPStorm

设置 PHP interpreter

PHPStorm-php-cli
PHPStorm-php-cli-view

设置Xdebug的端口

File->Settings->Languages&Frameworks->PHP->Debug,将其端口改为 xdebug 配置中对应的 xdebug.remote_port ,这里是 9000

phpstorm-debug-port

设置DBGp Proxy

File->Settings->Languages&Frameworks->PHP->Debug->DBGp Proxy,IDE key改成 Xdebug 配置文件中对应的 xdebug.idekey,这里是 PHPSTORM

phpstorm-debug-dbgp-proxy

添加一个 Server

File->Settings->Languages&Frameworks->PHP->Server, 点击 + 点击一个 Server:

  • Name:开发服务器
  • Host:dev.example.com
  • Port:80
  • 勾选 Use path mappings,填写对应服务器的路径,回车确认。

配置调试运行环境

在菜单中找到 Run,右键, Edit Configurations,点击窗口左上角的+添加 PHP Remote Debug:

"Local" PHP debugging
"Remote" PHP debugging

When you use the "local" debugging, IDE key is autogenerated

  • Name 是配置名称,可以随便填写;
  • Server 选择刚添加的那个 Server;
  • Start URL 无需改变;
  • Browser 也无需改变。

开始调试

所有步骤都配置完后,我们可以点击菜单中的 Run -> Start Listening for PHP Debug Connections 进行调试监听。

配置 Chrome 插件 Xdebug helper

chrome-xdebug-helper

无法断点

日志显示:

Log opened at 2018-05-26 12:06:31
I: Checking remote connect back address.
I: Checking header 'HTTP_X_FORWARDED_FOR'.
I: Remote address found, connecting to :9000.
W: Creating socket for ':9000', getaddrinfo: Success.
E: Could not connect to client. :-(
Log closed at 2018-05-26 12:06:31