让 PHP Xdebug 在 Mac VS Code 上工作

Posted

技术标签:

【中文标题】让 PHP Xdebug 在 Mac VS Code 上工作【英文标题】:Getting PHP Xdebug to work on Mac VS Code 【发布时间】:2022-01-09 17:04:12 【问题描述】:

我用自制软件安装了 php、Xdebug 和 Apache。

brew install php brew install httpd pecl install xdebug

然后我配置了99-xdebug.ini

php -v

我在 VS Code 中安装了 PHP Debug,并按照说明创建了 launch.json 文件。

很遗憾,我无法让步进调试器处理断点。

我的 Xdebug 日志中的一些输出。

which php 在终端、iterm2 和 VSCode 中产生相同的结果:/usr/local/bin/php

我的 test.php 文件代码:

exec('which php', $a);
var_dump($a);
$num = 12;
var_dump($num);
$num = 8;
var_dump($num);
$num = 16;
var_dump($num);

它将以下内容输出到调试控制台。

array(0) 


int(12)
int(8)
int(16)

我不知道为什么exec('which php', $a); 没有将/usr/local/bin/php 输出到调试控制台,而是输出一个空数组。

exec('whereis php', $a);
var_dump($a);

输出

array(1) 
  [0]=>
  string(12) "/usr/bin/php"

到调试控制台,这是系统php的路径(我想知道这是否正常,或者它应该指向hombrews php?)。

按照 Patrick 的建议添加 which php 的路径,

exec('/usr/bin/which php', $a);
var_dump($a);

输出

array(0) 


所以回顾一下,我正在尝试让步进调试器工作,不幸的是它不会在断点处停止。前面提到的 exec 函数应该返回一个数组,其中包含 brews php 可执行文件的路径,但返回一个空数组,我猜这与调试器不工作 IE 相关。它不会在断点处停止,因此我可以单步执行代码。

【问题讨论】:

如果添加第三个输出参数,您会从exec() 得到什么错误代码?您使用system()passthru() 或backticks syntax 得到相同的结果吗? 嗨,Patrick,感谢您的回复,我在调试控制台中没有收到 exec()、system() 和 passthru() 的错误代码,而反引号语法输出为空 标签。 好吧,如果错误代码是1,那么这意味着你有一个错误。通常,如果我在 Windows 上的 PHP 中运行 which php,则会收到错误代码 1,但如果我在 Linux 环境中运行相同的代码,则不会。从 PHP 调用时,您可能只是在路径中没有 which。如果您必须将 which 命令的完整路径放在您的字符串中,我不会感到惊讶。 好像是这个问题:***.com/questions/33028815/… “很遗憾,我无法让步进调试器处理断点。” 从您的日志中:Xdebug 停止的文件(PHP 执行的文件)是 @987654353 @ 而断点设置在另一个文件中:/Users/davidboyd/php-sandbox/test.php(在第 8、13 和 19 行 .. 根据您的代码示例,这些数字太大了)... 【参考方案1】:

好的,所以我终于通过在 VS Code 设置中启用允许断点来使步进调试器工作,然后我点击监听 xdebug 并在终端中输入 php 'insert file name here'

感谢这个视频的作者https://www.youtube.com/watch?v=s94gAsc4f3U&t=32s

感谢lazyone 和patrick 也帮助我并提供建议,干杯。

【讨论】:

以上是关于让 PHP Xdebug 在 Mac VS Code 上工作的主要内容,如果未能解决你的问题,请参考以下文章

mac+php+xdebug

vs code 配置 php xdebug

在 ubuntu 上使用 VS Code 进行 Xdebug 无法正常工作

无法通过 php 脚本连接到 xdebug(在 xampp for mac 上运行)

Mac 安装xdebug扩展

在 mac el capitan 上的 xampp 上的 xdebug