Apache没有加载Xdebug,但是从命令行启动时

时间:2010-02-05 13:32:41

标签: php apache xdebug

我知道这听起来很奇怪,但请相信我,这就是发生的事情。这是我的系统设置:

的Windows7
Apache 2.2
PHP 5.2.12
Xdebug 2.0.5

我在PHP.ini文件中配置了XDebug。当我运行php -m时,我确实看到Xdebug已加载。现在,如果我启动Apache AS A SERVICE (或由Apache Monitor),并运行phpinfo(),它不会显示Xdebug被加载。

但是,(现在这里是疯狂的部分),如果我进入我的Apache bin目录,只需运行httpd.exe,然后去查看phpinfo(), Xdebug现在显示为已加载!< /强>

此外,通过服务或命令行比较一些phpinfo(),看起来php.ini文件对于任何一种情况都是相同的。除了装载Xdebug的部分外,一切看起来都一样。

如果您有任何想法,请非常感谢。

6 个答案:

答案 0 :(得分:1)

我最近遇到了同样的问题,但我不得不针对SELinux进行针对xdebug.so模块的httpd访问:

chcon -v -R --type=httpd_sys_content_t /path/to/your/xdebug.so

重新启动httpd,一切都按预期工作。

答案 1 :(得分:0)

我在Windows / IIS中遇到类似Xdebug的问题 - php -m显示模块已加载,但phpinfo()没有。原来是一个权限问题 - 一旦我设置xdebug .dll给匿名用户提供读取权限,它就开始工作了。我会检查该.dll的权限,以确保运行的任何用户Apache都可以访问它。

答案 2 :(得分:0)

通常,每种可能的调用php实例的方式都有不同的配置文件:HTTP / CLI等(至少在* nix上就是这种情况)

我建议在你的系统上搜索php * ini,看看你是否有多个不同/缺少Xdebug设置的文件。

答案 3 :(得分:0)

这可能是一个错误的版本/组合。我有一个不同的问题(XDebug没有识别出一些变量),当我达到2.1.0时问题就解决了。

http://xdebug.org/download.php

答案 4 :(得分:0)

我有这个问题,发现它是由我的php.ini中的正斜杠而不是反斜杠引起的。 所以尝试: C:\ PHP \分机\ xdebug.dll 代替 C:/php/ext/xdebug.dll

答案 5 :(得分:0)

Mike Purcell,你几乎没有权利......

在新的Red Hat和其他Linux发行版中,SELinux已启用(吸收大的)并阻止Apache生成的子进程(例如xdebug.so)执行某些操作,例如访问Web。

因此,您需要使用以下方法禁用SElinux:

vi /etc/selinux/config 

SELINUX=disabled

所以重新启动,这将禁用SE Linux和X-Debug将开始工作...... 杀了一整天的原因,希望它能帮助别人..

这也是Amazon EC2和AWS Linux服务器的设置方式......

肖恩。