在Mac OS X上进行PHP调试 - 无望吗?

27

我已经尝试过以下几种方法:

  1. 使用Xdebug和Eclipse。 Eclipse启动了一个Web浏览器,但浏览器尝试访问Eclipse的.app包中不存在的文件。
  2. 使用Xdebug和NetBeans。 它表现得更好一些;浏览器打开/tmp中的一个页面,显示“启动中,请稍候...”,但除此之外没有任何反应。
  3. 使用Xdebug和debugclient,即随Xdebug提供的CLI工具。 MacPorts(我用来安装PHP和Xdebug)似乎并没有自动安装它,当我尝试手动编译时,我被告知“你有奇怪的libedit”。 通过MacPorts安装libedit也无法解决问题。
  4. Zend的调试器(精确名称我现在想不起来了)和Eclipse。 我记不清楚问题是什么,因为这是一段时间以前的事情,但它没能正常工作。

至少对于Xdebug,我相当自信我已经正确安装它了。 它在PHP文件中的phpinfo()和CLI中的php -i中都能够显示出来。

如果有人已经在Mac上以某种方式使PHP调试工作,我希望您能与我分享如何做到。 用var_dump($foo);die(); 来调试代码变得很快就过时了。如果不使用像Eclipse这样的庞大软件编辑器或者Zend想要向我出售的昂贵的专有工具,那就更好了。

我的服务器通过FastCGI连接到PHP,如果这有所区别。

8个回答

21

您可能需要了解MacGDBp。它是一个全新的免费工具,界面非常好看。它同样使用了Xdebug PHP扩展。您可以在帮助部分找到指导,其中包括Xdebug配置说明,而且这个应用也有一篇很棒的概述文章,由Particletree团队撰写:使用MacGDBp消除回声


现在看起来非常不错。但它也需要 PHP 5,而我在工作中无法访问。不过我迫不及待想在家里试试它。还有五个小时十八分钟三十三秒…… - Garrett Albright
我一直在 Mac OS X 上寻找类似的东西。 - Devon
好的,这太棒了。我要坚决向老板提出在我的工作机器上安装PHP 5(和10.5),以便我可以使用它。Brian,你太厉害了。 - Garrett Albright
1
这个在 PHP 5.3.3 w/ Xdebug 2.1.0 上有很多令人沮丧的 bug。作者似乎不太负责。除了最简单的调试之外,它几乎无法使用。 - hobodave
我发现http://xdebug.org/find-binary.php非常有帮助,可以在OSX自带的PHP中安装XDebug。 - drewish

11

我是这样做的:

1 - 从http://aspn.activestate.com/ASPN/Downloads/Komodo/RemoteDebugging复制最新版本的xdebug.so到/usr/libexec。

2 - 在全局php.ini文件中添加以下内容:

zend_extension="/usr/libexec/xdebug.so"
xdebug.remote_enable=1
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_autostart=1

3 - 重新启动 Apache 并运行 MacGDBp


非常有帮助!我尝试使用Homebrew从源代码构建xdebug,但失败了。 - Kangur

3

我想更新一下这个帖子,让大家知道有一个新的应用程序在这里http://codebugapp.com/它是针对OSX的Xdebug客户端,虽然是商业软件。


我搞不清楚如何让它工作。它似乎无法在执行的第一行停下来,就像MacGDBp那样,而且我找不到插入断点的方法 - 将文件拖到断点列表或应用程序图标上什么都不做,点击列表旁边的+图标只会插入一个空行。尝试打开帮助框返回经典的“[应用程序名称]没有可用的帮助” - 对于一个免费的开源软件来说可以接受,但对于一个要求我付费的应用程序来说就不行了。(同样,网页上的文本需要修改 - “OSX”,“mac”,逗号连接)我还是回到MacGDBp吧。 - Garrett Albright
你需要检查“第一行中断”设置,以使其在第一行中断。对于文件,您必须按CMD + E。我发布此帖子时,您提到的其他事情正在被添加。在接下来的几天内将发布更新,以解决文件/文件夹拖动、帮助和其他一些问题。顺便说一句,您可以在这里获取文档:http://codebugapp.com/support - Henrique B.
我实际上喜欢它不像MacGDBp那样在第一行就崩溃,后者总是在第一行崩溃。 - wizonesolutions
在Codebug中,第一行断点是一个选项,您可以在首选项中打开或关闭它。 - Don
Codebug已经停止运营,根据MacUpdate(https://www.macupdate.com/app/mac/45824/codebug)的消息,该网站目前显示为“停放/出售域名”类型的信息。 - Cottser

1

有一种方法可以使用以下方式进行操作

1) 安装php和调试工具

brew install php70   
brew install php70-xdebug
  • 在PhpStorm中,检查“设置” => “语言和框架” => “PHP”
    Php语言级别:7
    解释器:PHP 7.0.8 + XDebug(或从[...]中选择)

  • 检查调试配置: “设置” => “语言和框架” => “PHP” => “调试” => “Xdebug”部分
    所有复选框都应该被选中,并将调试端口设置为:9001

2)在您的应用程序目录中运行服务器:

php -S localhost:8080

3)将localhost:8080添加到PhpStorm首选项 => 语言和框架 => PHP => 服务器:
名称:Localhost:8080
主机:localhost
端口:8080
调试器:Xdebug

4)更新php.ini:
Php => 解释器 => […] => 配置文件 - 在编辑器中打开
添加此部分:(通过cli检查zend_extention路径)

[Xdebug]
zend_extension=/usr/lib/php/extensions/no-debug-non-zts-20121212/xdebug.so
xdebug.remote_enable=1
xdebug.remote_host=localhost
xdebug.remote_port=9001 (same as in Debug preferences)

5) 添加调试配置: 运行 => 编辑配置 => 添加 - Php Web 应用程序

  • 选择 Localhost:8080 服务器

6) 点击开始监听 Php 调试连接
7) 设置断点
7) 点击调试 (绿色虫子)


1

我使用 Komodo 5 --- 调试非常出色,不仅可以调试 PHP,还可以调试 Ruby 和 Python。 我主要用它来调试在远程服务器上运行的 PHP 脚本,但也可以进行本地调试。虽然并非免费,但假设您自己的时间是有价值的,那么您将在几个小时内收回成本!


0

如果您正在使用MAMP,请注意需要更新两个php.ini文件。我花了数小时才弄清楚这一点。这两个文件位于MAMP 4的以下文件夹中:

/Applications/MAMP/bin/php/php5.6.25/conf/php.ini
/Applications/MAMP/conf/php5.6.25/php.ini

如果你正在使用PHP7,则需要更新这些文件。滚动到文件底部,确保有以下条目:

[xdebug]
zend_extension="/Applications/MAMP/bin/php/php5.6.25/lib/php/extensions/no-debug-non-zts-20131226/xdebug.so"
xdebug.default_enable=1
xdebug.remote_enable=1
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_autostart=1

然后确保重新启动服务器,否则新的设置将无法加载。 为确保Xdebug正常工作,请打开MAMP启动页,并单击phpinfo选项卡。 在列表中搜索xdebug,您应该看到Xdebug部分,显示扩展已加载并启用,否则上述配置有误。

接下来,您可以启动MacGDBp,它将连接到端口9000并允许您调试文件。

注意:如果您正在开发Wordpress,则请确保跳过“AJAX”调试会话。 这些对于Dashboard来说是常规的,因为它会为更改而向服务器发送ping。 如果在MacGDBp设置中启用了“在第一行中断”,则您将看到ajax会话在define ('DOING_AJAX')....行中断,您可以跳过。 然后触发事件以调试代码。


0

我想我不会得到额外的奖励分,但是Zend Studio在我的Mac上运行良好,可以连接到在VMware中运行的Apache。


你正在虚拟哪个操作系统?你也在 VMware 上运行 Zend Studio 吗? - Garrett Albright
我只虚拟化Linux。我想使用Samba将代码挂载到运行Zend Studio的Mac上进行编辑。 - Gary Richardson

0

我经常使用Eclipse和ZendDebugger来调试PHP CLI脚本和Web项目(通过Apache等)。

我在以下链接中回答了类似的问题: 点击这里

希望这就是你要找的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接