让 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 上工作的主要内容,如果未能解决你的问题,请参考以下文章
在 ubuntu 上使用 VS Code 进行 Xdebug 无法正常工作