PhpStorm配置xdebug远程调试

时间:2022-12-03 22:36:57

(一)安装php扩展xdebug:

wget https://xdebug.org/files/xdebug-2.4.0.tgz
tar zxvf xdebug-2.4.0.tgz
cd xdebug-2.4.0
/usr/local/php/bin/phpize
./configure --enable-xdebug  --with-php-config=/usr/local/php/bin/php-config
make
make install

(二)配置xdebug,让 cgi 和 cli 使用不同的配置文件:

http 请求用 php.ini,命令行脚本 用 php-cli.ini:

sudo cp /usr/local/php/etc/php.ini /usr/local/php/etc/php-cli.ini


对http请求 仅用cookie触发debug:

设置xdebug,仅被动触发debug(仅对带cookie:XDEBUG_SESSION=你的idekey 的请求 触发debug):

编辑 php.ini,添加或修改以下项:

zend_extension = "/usr/local/php/modules/xdebug.so"xdebug.default_enable=Onxdebug.collect_params=Onxdebug.collect_vars=Onxdebug.collect_return=Onxdebug.show_local_vars=1xdebug.remote_handler=dbgpxdebug.remote_enable=1xdebug.remote_host=192.168.1.69 #安装PhpStorm的机器ip;xdebug.remote_connect_back=1                    # 如果启用并且这里写 1,则启动调试时会自动  连接请求来源ip。这项配置会覆盖 remote_host 设置的ip。不建议开启这个(万一有启动了360安全卫士==的机器访问你的虚拟机。。360安全卫士==防火墙软件开启网络防护后,外来的tcp连接 会被长时间挂起,造成php-fpm worker进程假死)。xdebug.remote_port=9000                         # 与phpstorm设置保持一致xdebug.remote_autostart=Offxdebug.remote_log=/dev/nullxdebug.auto_trace=Offxdebug.show_exception_trace=0

改完重启php-fpm。

命令行执行脚本时自动触发debug:

命令行执行脚本时,如果phpstorm启动了debug,则触发debug:

编辑 php-cli.ini,添加或修改以下项:

zend_extension = "/usr/local/php/modules/xdebug.so"xdebug.default_enable=Onxdebug.collect_params=Onxdebug.collect_vars=Onxdebug.collect_return=Onxdebug.show_local_vars=1xdebug.remote_handler=dbgpxdebug.remote_enable=1xdebug.remote_host=192.168.1.69                   # 安装phpstorm的机器的ipxdebug.remote_port=9000                          # 与phpstorm设置保持一致xdebug.remote_autostart=Onxdebug.idekey=你的idekey-cli                      # 最好自己独有,不跟别人重复xdebug.remote_log=/dev/nullxdebug.auto_trace=Offxdebug.show_exception_trace=0

1)设置PHP、xdebug调试端口等

PhpStorm配置xdebug远程调试

PhpStorm配置xdebug远程调试

 2) 添加server:

 PhpStorm配置xdebug远程调试

3) 添加调试配置:

PhpStorm配置xdebug远程调试



4) 启动debug、加断点并且调试 

PhpStorm配置xdebug远程调试

启动  php-cli.ini  配置可以调试  在开发虚拟机上执行命令行php脚本。

6) 修改这个链接后  从浏览器打开:

http://192.168.100.你的虚拟机IP/setcookie.php?idekey=你的idekey

这个请求会给浏览器添加cookie:XDEBUG_SESSION=你的idekey,domain=虚拟机完整IP(不带端口),并设置成长时间不过期。此后对虚拟机的访问就会触发调试。

(三)防调试超时:

修改以下3处配置,防止调试过程中过早断开与phpstorm的连接:

# php*.ini (/usr/local/php/etc/php*.ini):max_execution_time=7200 # php-fpm.conf (/usr/local/php/etc/php-fpm.conf):request_terminate_timeout = 0  # fpm不加执行时间限制,少管闲事。 # nginx (/usr/local/nginx/conf/nginx.conf)在http端添加或修改这两个:fastcgi_connect_timeout 7200s;   # 因为php-fpm可能会被调试阻塞fastcgi_read_timeout 7200s;

(四)其它配置建议:

  • Linux/Mac下 在phpstorm安装目录下的 bin/phpstorm.sh 顶部加一行 ulimit -s 256 可以节省大约600M物理内存(如果在“phpstorm内部”运行php解释器遇到问题,可以尝试 ulimit -s 512,没实测)。

  • 建议开8个或更多 php-fpm worker进程,如果有N层curl则至少开N+1个,否则会请求会死锁。

  • 如果遇到 断点被忽略、不能step-in、无法对变量set-value 等奇怪的问题,可以禁用 eaccelerator 试试。

  • 遇到  页面长时间加载不下来  的情况,极可能是因为 你的笔记本禁止了远程连接(360安全卫士==网络防火墙软件都会禁止外来tcp连接),可以从虚拟机检查连接是否畅通:

    One-Box-Test-6 devbox $ telnet 你的笔记本IP  9000 # 登录到虚拟机执行



本文出自 “我相信” 博客,请务必保留此出处http://mrcelite.blog.51cto.com/2977858/1612320