(一)安装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=On xdebug.collect_params=On xdebug.collect_vars=On xdebug.collect_return=On xdebug.show_local_vars=1 xdebug.remote_handler=dbgp xdebug.remote_enable=1 xdebug.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=Off xdebug.remote_log=/dev/null xdebug.auto_trace=Off xdebug.show_exception_trace=0
改完重启php-fpm。
命令行执行脚本时自动触发debug:
命令行执行脚本时,如果phpstorm启动了debug,则触发debug:
编辑 php-cli.ini,添加或修改以下项:
zend_extension = "/usr/local/php/modules/xdebug.so" xdebug.default_enable=On xdebug.collect_params=On xdebug.collect_vars=On xdebug.collect_return=On xdebug.show_local_vars=1 xdebug.remote_handler=dbgp xdebug.remote_enable=1 xdebug.remote_host=192.168.1.69 # 安装phpstorm的机器的ip xdebug.remote_port=9000 # 与phpstorm设置保持一致 xdebug.remote_autostart=On xdebug.idekey=你的idekey-cli # 最好自己独有,不跟别人重复 xdebug.remote_log=/dev/null xdebug.auto_trace=Off xdebug.show_exception_trace=0
1)设置PHP、xdebug调试端口等
2) 添加server:
3) 添加调试配置:
4) 启动debug、加断点并且调试
启动 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 # 登录到虚拟机执行
转载于:https://blog.51cto.com/mrcelite/1612320