php - 使用 XDebug 和 PHPStorm、MAMP Pro、OS X 进行本地命令行调试

标签 php debugging mamp xdebug

之前,我让 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

我已经升级到 MAMP Pro 3.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 符号链接(symbolic link)到/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"

感谢@Niloct 激发了让我找到解决方案的想法,尽管我很惭愧我一开始没有想到它。 :/

最佳答案

在 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"

然后发出 php -i | grep xdebug 以检查它是否已加载到 CLI 中。

此外,三次检查端口,注意我使用的是 9005,因为我与 php-fpm 有冲突。

关于php - 使用 XDebug 和 PHPStorm、MAMP Pro、OS X 进行本地命令行调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26304267/

相关文章:

php - 如何处理来自 X-Editable 插件的 POSTed 数据?

php - Gzip 不适用于本地开发

php - 使用 PHP 到 MySQL 日期时间格式

php - 为 IN 语句 PDO MYSQL 转义字符串数组

java - Eclipse - 在 Android 应用程序上引发未处理的异常时中断用户代码

windows - shell 扩展会导致我的程序崩溃吗?

php - 我正在使用 laravel 5.8,我无法向 mysql 数据库插入数据

Mysql 通过子查询返回的列表进行查询

PHP 和 SQLite 没有这样的文件或目录?

swift - 如何在 Swift 中打印调用堆栈?