我在使用MAMP的Mac OS X上构建和安装Xdebug时遇到问题。
到目前为止,我在网上广泛搜索,目前我还停留在Xdebug的部分;安装向导";告诉我要;运行:phpize"在我下载的源代码上。
当我运行phpize
时,我得到以下消息:
new-host-2:xdebug-2.2.0 Dima$ phpize
grep: /usr/include/php/main/php.h: No such file or directory
grep: /usr/include/php/Zend/zend_modules.h: No such file or directory
grep: /usr/include/php/Zend/zend_extensions.h: No such file or directory
Configuring for:
PHP Api Version:
Zend Module Api No:
Zend Extension Api No:
Cannot find autoconf. Please check your autoconf installation and the
$PHP_AUTOCONF environment variable. Then, rerun this script.
如果我做which phpize
,我会得到:
new-host-2:xdebug-2.2.0 Dima$ which phpize
/usr/bin/phpize
这不是我想要使用的版本。我想使用我假设的phpize
的MAMP安装版本,因为我想在PHP的MAMP版本上安装Xdebug。这是令人费解的,因为我已经将特定于MAMP的PHP bin路径添加到了$PATH
变量中的.bash_profile中。
如果我运行echo $PATH
,我得到:
new-host-2:xdebug-2.2.0 Dima$ echo $PATH
/opt/local/bin:/opt/local/sbin:/Applications/MAMP/bin/php/php5.4.3/bin:/Users/Dima/.rvm/gems/ruby-1.9.2-p290/bin:/Users/Dima/.rvm/gems/ruby-1.9.2-p290@global/bin:/Users/Dima/.rvm/rubies/ruby-1.9.2-p290/bin:/Users/Dima/.rvm/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin
MAMP特定的PHP路径显示在"/usr/bin"前面。我尝试的下一件事是运行特定于MAMP的phpize
,手动为其提供整个路径,如下所示:
new-host-2:xdebug-2.2.0 Dima$ /Applications/MAMP/bin/php/php5.4.3/bin/phpize
-bash: /Applications/MAMP/bin/php/php5.4.3/bin/phpize: Permission denied
现在我在Finder中检查了这些文件的权限,它显示我有读取和写入该文件夹中文件的完全权限。我有点迷路了。
我遇到了同样的问题,但我找到了更好的解决方案。
Xdebug已在MAMP中。
检查php.ini文件:
/Applications/MAMP/conf/php5.x/php.ini
一直往下走。你会看到
[xdebug]
;zend_extension="/Applications/MAMP/bin/php5.X/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so"
将其更改为
[xdebug]
zend_extension="/Applications/MAMP/bin/php5.X/lib/php/extensions/no-debug-non-zts-20060613/xdebug.so"
xdebug.remote_enable=1
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
重新启动服务器完成!
请参阅:想要运行Xdebug吗?MAMP是最简单的方法…
我尝试了Dmitry Samuylov的答案,但对我来说不太管用,所以我在谷歌上搜索了更多,下面是诀窍。
-
从SourceForge 下载并解压MAMP组件
-
记下在phpize过程中找不到的路径。对我来说是:
/Applications/MAMP/bin/php/php5.2.17/include/php/main/php.h /Applications/MAMP/bin/php/php5.2.17/include/php/Zend/zend_modules.h /Applications/MAMP/bin/php/php5.2.17/include/php/Zend/zend_extensions.h
-
在MAMP PHP目录中创建所需的路径。对我来说又是
/include/php/
-
确保对目录的正确权限
-
找到目标PHP版本的组件(在我的例子中是5.2.17),并将它们复制到步骤3中创建的路径中。
-
从Xdebug站点运行使用正确版本phpize的说明
经过更多的研究和尝试,我在做了以下事情后成功安装了它:
- 在Terminal中,我运行了
chmod u+x /Applications/MAMP/bin/php/php5.4.3/bin/*
。打开phpize和该路径中其他所有内容的执行权限 - 按照本文安装命令行工具
- 根据本文安装最新的Autoconf和相关工具
- 之后,按照Xdebug向导提供的步骤顺利运行
重要的是要指出;解决方案";用于Xdebug 2。这几天我们在Xdebug3。
MAMP/macOS上的Xdebug 3
要在macOS上的MAMP中启用Xdebug 3,请执行以下操作:
-
打开工具→phpinfo
-
找到Loaded Configuration File行,并复制php.ini文件的完整路径(
/Application/MAMP/......
)。 -
打开一个终端并键入命令
open
,然后粘贴活动php.ini文件的复制完整路径。 -
添加以下行
[xdebug] zend_extension = xdebug xdebug.mode = debug xdebug.show_local_vars=1
-
重新启动MAMP web服务器。
检查
再次检查phpinfo(刷新),并在启动with Xdebug vX.X.X....
的ZEND引擎下查找一行。再往下看,你会发现一个带有大的Xdebug标志的部分,它向你展示了版本和(dis|en)功能。
如果没有显示,请检查拼写错误或其他拼写错误。
有关其他设置,请参阅Xdebug文档,这些设置可以添加到您打开的php.ini文件中,例如profile。如果您更改了PHP版本,您将不得不重复该过程。
备选方案
或者,购买MAMP Pro许可证,允许从MAMP控制面板执行此操作。
附加步骤
为了启动调试器(或探查器),您需要在浏览器请求中添加一个神奇的cookie。您可以使用浏览器插件轻松添加这些内容,如";Xdebug助手";适用于Chrome。
这很容易。
在*C:''MAMP''conf''phpx.x.x*目录中,打开每个相关的php.ini。
然后将这些行放在php.ini:中
[xdebug]
xdebug.default_enable=1
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_autostart=1
zend_extension="C:'MAMP'bin'php'php5.5.0'ext'php_xdebug.dll"