xdebug没有加载。 apache重启后,在phpinfo()中找不到

时间:2010-06-29 20:29:32

标签: xdebug mamp apache-config

我一直在搜寻我能找到的每一种资源,但是空洞的。当我启动调试会话时,我在NetBeans 6.9中收到了可怕的“等待连接”消息。经过多次阅读,大多数人都能够获得phpinfo()来显示它加载了xdebug模块。我不是这样。

我使用此调用

通过SVN下载了源代码
svn co svn://svn.xdebug.org/svn/xdebug/xdebug/trunk xdebug

我切换到xdebug目录然后在源上运行 phpize

sudo /Applications/MAMP/bin/php5/bin/phpize
Password:
grep: /Applications/MAMP/bin/php5/include/php/main/php.h: No such file or directory
grep: /Applications/MAMP/bin/php5/include/php/Zend/zend_modules.h: No such file or directory
grep: /Applications/MAMP/bin/php5/include/php/Zend/zend_extensions.h: No such file or directory
Configuring for:
PHP Api Version:        
Zend Module Api No:     
Zend Extension Api No:  

一个大胖子什么都没有!引用的目录甚至不存在。所以,我假设我超越这一点的任何.ini调整是没用的。如果我在哪里做php,我会在/ usr / bin中找到它。这是预装OS的默认php。我不想那个。我需要使用安装了MAMP的php。我无法相信让这件事变得多么令人沮丧!

为了记录,我的php.ini中的xdebug部分如下所示:

[xdebug]
    ; xdebug config for Linux and Mac OS X
    zend_extension="/Applications/MAMP/bin/php5/lib/php/extensions/no-debug-non-zts-20060613/xdebug.so"
    xdebug.remote_enable=1
    xdebug.remote_handler=dbgp
    xdebug.remote_mode=req
    xdebug.remote_host=localhost
    xdebug.remote_port=9000
    xdebug.idekey="netbeans-xdebug"
    xdebug.profiler_enable=1
    xdebug.profiler_output_name=xdebug.cachegrind-out.%s.%p
    xdebug.remote_log="/Applications/MAMP/logs/xdebug_log.log"

这是让xdebug工作的许多不同尝试的混合物。所以,我不知道哪些是有效的。

我把自己置于专家的怜悯之下,因为我显然不是其中之一。我完全不知道如何继续进行。

提前致谢。

3 个答案:

答案 0 :(得分:7)

要在MAMP目录中使用phpize而不是系统路径,您应该将PHP二进制文件的MAMP目录添加到$ PATH。下面我使用的是MAMP 1.9.1,它提供PHP 5.2和PHP 5.3。我们假设您正在编译PHP 5.3。

打开或创建~/.bash_profile并输入以下内容:

#Add MAMP binaries to path
export PATH="/Applications/MAMP/Library/bin:/Applications/MAMP/bin/php5.3/bin:$PATH"

您可能还需要将/Applications/MAMP/bin/php5.3/bin中的二进制文件chmod为可执行文件:

chmod 755 /Applications/MAMP/bin/php5.3/bin/pear
chmod 755 /Applications/MAMP/bin/php5.3/bin/peardev
chmod 755 /Applications/MAMP/bin/php5.3/bin/pecl
chmod 755 /Applications/MAMP/bin/php5.3/bin/phar
chmod 755 /Applications/MAMP/bin/php5.3/bin/phar.phar
chmod 755 /Applications/MAMP/bin/php5.3/bin/php
chmod 755 /Applications/MAMP/bin/php5.3/bin/php-config
chmod 755 /Applications/MAMP/bin/php5.3/bin/phpcov
chmod 755 /Applications/MAMP/bin/php5.3/bin/phpize

重新启动终端会话以获取要加载的新$ PATH。运行命令which phpize,它应显示/Applications/MAMP/bin/php5.3/bin/phpize。如果没有,则在您的$ PATH中不会加载MAMP目录中phpize的路径。在终端中使用echo $PATH以确保/Applications/MAMP/bin/php5.3/bin位于$ PATH。

要使xDebug进行编译,需要编译PHP时的头文件。这些可在MAMP网站的DMG中获得,并称为“MAMP组件”:http://www.mamp.info/en/downloads/index.html

解压缩MAMP组件并将MAMP_src复制到您的桌面。解压缩MAMP_src/php-5.3.2.tar.gz并将其移至php-config --includes中包含/Applications/MAMP/bin/php5.3/include/php的包含路径。

cd ~/Desktop/MAMP_src
tar -xvzf php-5.3.2.tar.gz
mkdir -p /Applications/MAMP/bin/php5.3/include
mv php-5.3.2/ /Applications/MAMP/bin/php5.3/include/php

您现在可以在xDebug源目录中运行phpize

答案 1 :(得分:3)

我在Mac OSX 10.6上遇到了与XAMPP类似的问题。

在xdebug下载目录中运行phpize时,我没有版本号。

PHP Api Version:        
Zend Module Api No:     
Zend Extension Api No

我必须安装'开发包',它将/ Applications / XAMPP / xamppfiles / include和其他文件添加到您的XAMPP安装中。安装开发包也修复了pecl所以我尝试使用pecl来安装xdebug。

pecl install xdebug

但是apache无法启动错误

Failed loading /Applications/XAMPP/xamppfiles/lib/php/php-5.3.1/extensions/no-debug-non-zts-20090626/xdebug.so:  dlopen(/Applications/XAMPP/xamppfiles/lib/php/php-5.3.1/extensions/no-debug-non-zts-20090626/xdebug.so, 9): no suitable image found.  Did find:
        /Applications/XAMPP/xamppfiles/lib/php/php-5.3.1/extensions/no-debug-non-zts-20090626/xdebug.so: mach-o, but wrong architecture

我尝试从源代码编译并获得相同的“wrong architecture”错误

最后,我刚刚使用了活跃状态的KomodoIDE binary

答案 2 :(得分:0)

由于PHP 5.3.1的问题,我刚开始使用xdebug。几个星期前我按照说明使用了PECL,但看起来phpize是新的黑色。我查看了新指令(从我的phpinfo()生成)@ http://xdebug.org/find-binary.php

这是值得注意的:

Run: phpize

As part of its output it should show:

Configuring for:
PHP Api Version:         20090626
...
Zend Extension Api No:   220090626
If it does not, you are using the wrong phpize. Please follow this FAQ entry and skip the next step.

2件事:

  1. 你检查过phpize是最新的吗?

  2. 如果不起作用,请尝试以下说明:http://xdebug.org/docs/install