安装后xdebug无法正常工作并设置php设置

jku*_*ner 1 php xdebug

我在PHP 7.3上安装了Xdebug pecl install xdebug

当我将这些设置添加到/etc/php/7.3/apache2/php.ini并重新加载apache时,页面失败并且没有数据发送到服务器.

xdebug.var_display_max_children=-1
xdebug.var_display_max_data=-1
zend_extension="/usr/lib/php/20180731/xdebug.so"
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.halt_level=E_WARNING|E_NOTICE|E_USER_WARNING|E_USER_NOTICE
xdebug.scream=1
Run Code Online (Sandbox Code Playgroud)

不知道为什么它不起作用.

yiv*_*ivi 8

(在你的问题的原始版本中,你的配置被注释掉了,现在你已经编辑了那一点,让下一对段落离开了循环)

尽管文档声明#自PHP 7.0以来has has character()不再被识别为有效的注释字符:

PHP更新日志

似乎php会愉快地将这些行视为配置文件中的注释.解释器会忽略散列之外的所有内容.

所以这些配置线完全无效.

要验证是否正在加载配置,请创建一个如下所示的简单文件:

<php
phpinfo();
Run Code Online (Sandbox Code Playgroud)

加载此文件将告诉您有关PHP配置的所有信息.如果Xdebug已成功加载,您将看到如下内容:

phpinfo输出

并且低于加载的配置设置:

phpinfo输出

这些是最重要的设置,实际加载和启用Xdebug扩展:

zend_extension="/usr/lib/php/20180731/xdebug.so"
xdebug.remote_enable=1
Run Code Online (Sandbox Code Playgroud)

重要提示:您需要检查/usr/lib/php/20180731/xdebug.so实际存在,如果没有找到xdebug模块的实际位置.

下一行假设Web服务器和浏览器安装在同一台IP上的同一台机器上,这对于简单的设置可能是正确的:

 xdebug.remote_host=127.0.0.1
Run Code Online (Sandbox Code Playgroud)

作为替代方案,您可以告诉Xdebug连接回原始请求的IP

 xdebug.remote_connect_back=On
Run Code Online (Sandbox Code Playgroud)

通过以下行,您可以了解IDE正在侦听哪个端口.它默认为9000,因此除非你需要监听非标准端口(例如,同时针对不同的解释器同时调试多个项目),否则通常不需要设置它.但通常情况下,您可以安全地省略此行:

xdebug.remote_port=9000
Run Code Online (Sandbox Code Playgroud)

加载并启用模块后,您还可以使用环境变量配置一些Xdebug设置.具体来说xdebug.remote_host,xdebug.remote_port,xdebug.remote_modexdebug.remote_handler

例如:

export XDEBUG_CONFIG="remote_host=192.168.0.3 remote_port=9005"
Run Code Online (Sandbox Code Playgroud)