以前我有MAMP v2.x与XDebug配合得很好。它的配置使我可以使用以下书签JavaScript为每个浏览器连接打开和关闭它:
javascript:(/**%20@version%200.5.2%20*/function()%20{document.cookie='XDEBUG_SESSION='+'PHPSTORM'+';path=/;';})()
javascript:(/**%20@version%200.5.2%20*/function()%20{document.cookie='XDEBUG_SESSION='+''+';expires=Mon,%2005%20Jul%202000%2000:00:00%20GMT;path=/;';})()
我还可以调试在命令行上执行的脚本,使用bash打开和关闭调试:
export XDEBUG_CONFIG="idekey=PHPSTORM"
unset XDEBUG_CONFIG
我已经升级到MAMPPro3.x,并在浏览器上进行调试,可以使用JS书签打开和关闭它。然而,我一直无法在终端上进行调试。MAMP的默认安装是让XDebug自动启动。我不希望这样,因为它在调试期间阻止访问服务器上的其他站点,所以我修改了配置。这是我的:
[xdebug]
MAMP_Xdebug_MAMP
xdebug.remote_enable=on
xdebug.remote_log="/var/log/xdebug.log"
xdebug.remote_host=localhost
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_port=9000
xdebug.idekey="PHPSTORM"
因此,我的脚本使用了正确的php二进制文件,我已将/usr/bin.php符号链接到/Applications/MAMP/bin/php/php5.4.30/bin/php
我还试着重新打开xdebug.remote_autostart,看看是否可以从终端开始调试。不行。
网络上有很多关于如何进行远程命令行调试的信息,但我没有发现任何对本地命令行调试有帮助的信息。
我正在寻找如何使用MAMP Pro 3.x进行本地命令行调试的想法。
解决方案更新:我用cli中的phpinfo()运行了一个脚本,发现由于某种原因,当从命令行调用php时,它加载了一个不同的php.ini。我将以下内容添加到/Applications/MAMP/bin/php/php5.4.30/conf/php.ini中,它现在可以工作了!
zend_extension="/Applications/MAMP/bin/php/php5.4.30/lib/php/extensions/no-debug-non-zts-20100525/xdebug.so"
xdebug.remote_enable=on
xdebug.remote_log="/var/log/xdebug.log"
xdebug.remote_host=localhost
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_port=9000
xdebug.idekey="PHPSTORM"
感谢@Nilopt激发了我的想法,让我找到了解决方案,尽管我很惭愧一开始没有想到。:/
在PHP安装目录中,确保配置xdebug.ini
在conf.d
目录中,以便cli和webserver激活xdebug:
MacBook:5.5 teixeira$ pwd
/usr/local/etc/php/5.5
MacBook:5.5 teixeira$ ls
conf.d php-fpm.conf php.ini
pear.conf php-fpm.conf.default
MacBook:5.5 teixeira$ ack -i xdebug
conf.d/ext-xdebug.ini
1:[xdebug]
2:zend_extension="/usr/local/Cellar/php55-xdebug/2.2.4/xdebug.so"
3:xdebug.remote_enable = 1
4:xdebug.remote_host = 127.0.0.1
5:xdebug.remote_port = 9005
6:xdebug.remote_handler = dbgp
7:xdebug.profiler_enable=0
8:xdebug.profiler_enable_trigger=1
9:xdebug.idekey=PHPSTORM
10:xdebug.remote_log="/tmp/xdebug.log"
然后发出CCD_ 3以检查它是否已加载在CLI中。
另外,请三次检查端口,注意我使用9005
是因为我与php-fpm
发生了冲突。