我使用PHPStorm作为我的主要PHP调试工具,非常满意。到目前为止,我一直使用Firefox来运行脚本,而PHPStorm能完美捕捉断点。
现在,我遇到了一个新情况,我需要通过命令行(而不是浏览器)运行PHP脚本,并想知道是否有方法设置PHPStorm在通过命令行运行PHP脚本时能够捕捉断点?
我使用PHPStorm作为我的主要PHP调试工具,非常满意。到目前为止,我一直使用Firefox来运行脚本,而PHPStorm能完美捕捉断点。
现在,我遇到了一个新情况,我需要通过命令行(而不是浏览器)运行PHP脚本,并想知道是否有方法设置PHPStorm在通过命令行运行PHP脚本时能够捕捉断点?
使用Phpstorm在shell/command line上启用Xdebug进行PHP调试非常容易:
export XDEBUG_CONFIG="idekey=PHPSTORM"
在Windows命令行界面中,使用set代替export。
set XDEBUG_CONFIG="idekey=PHPSTORM"
确保Phpstorm正在监听PHP调试连接。
要从命令行端禁用调试:
unset XDEBUG_CONFIG
这是Phpstorm IDE-Key的默认值(PHPSTORM)。
set XDEBUG_CONFIG="idekey=PHPSTORM"
。 - Jan.J请关注/投票相关的PhpStorm问题。
目前配置有些复杂。应该可以像Zend KB中描述的那样,通过在PhpStorm中模拟服务器和配置Php Remote Debug
来进行调试。请注意,此教程存在一个错误,在Windows上需要设置QUERY_STRING如下:
SET "QUERY_STRING=start_debug=1&debug_port=10137&debug_host=127.0.0.1&debug_stop=1&no_remote=1&debug_session_id=10000"
(请注意引用方式的不同,这很重要)。
按照屏幕截图中所示设置 PhpStorm:
在主工具栏上单击Debug按钮。PhpStorm将开始监听调试器连接。
在命令行中运行您的脚本:
d:\dev\zend\ZendServer\bin\php.exe d:\work\attaches\sample\helps.php
PhpStorm将会触发断点:
这在Windows上使用Zend Server安装测试过,但在其他系统和xdebug中应该类似。
如果你想直接从PhpStorm进行调试,请使用Php Script的运行/调试配置类型。为此项目配置的PHP实例必须在配置文件中启用Zend Debugger或Xdebug。
PHP主目录和调试器模式可以在文件|设置|PHP
中指定。
我刚在Zend Server安装(PHP主目录:d:\dev\zend\ZendServer\bin
)和Zend Debugger中进行了验证,我的测试完全正常。
如果您运行脚本,可以在此处查看输出:
如果您调试脚本,则可以在此处查看输出:
对我来说,这些建议都没有起作用。
如果你处于同样的情况,请尝试以下命令(检查正确的PHP解释器路径):
/usr/bin/php -dzend_extension=xdebug.so -dxdebug.remote_enable=1 -dxdebug.remote_mode=req -dxdebug.remote_port=9000 -dxdebug.remote_host=127.0.0.1 -dxdebug.remote_autostart=1 [PHP_SCRIPT]
检查环境变量SERVER_NAME
和SERVER_PORT
是否设置。PHPStorm需要它们来进行正确的映射。可以在bash中使用export命令或在php脚本中手动设置它们。在这两种情况下,PHPStorm都可以正确地在$_SERVER['SERVER_NAME']
和$_SERVER['SERVER_PORT']
下找到它。
export XDEBUG_CONFIG="idekey=12345"
在 MacOS 上,我使用了不同的 bash_profile。我需要首先运行以下命令:
source ~/.bash_profile
这将我的php从内置的/usr/bin/php更改为通过XAMPP安装的版本。在上述命令后,PHPStorm的XDebug开始工作。