使用 PhpStorm 和 Xdebug 调试 Symfony REST API

Debugging Symfony REST API using PhpStorm & Xdebug

我正在尝试为 PhpStorm 设置 xdebug。

设置如下:

到目前为止我尝试过的:

和运行命令:

echo "zend_extension=$(find /usr/local/lib/php/extensions/ -name xdebug.so)" > /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
echo "xdebug.idekey = PHPSTORM" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
echo "xdebug.default_enable = 0" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
echo "xdebug.remote_enable = 1" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
echo "xdebug.remote_autostart = 0" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
echo "xdebug.remote_connect_back = 0" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
echo "xdebug.profiler_enable = 0" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
echo "xdebug.remote_host = "docker.for.mac.host.internal"" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini

像下图一样设置 PhpStorm(除了端口是 8090 作为我的 Web 应用程序 运行s 在该端口上。我使用 localhost:8090/ 在本地访问网站):

现在,当我拨打 API 电话时,没有任何反应。它不会在断点处停止。

有人帮我解决这个问题吗?

PS: 我正在使用 Xdebug Helper chrome 插件。

这是我在 Docker LAMP 堆栈中使用的设置

https://github.com/delboy1978uk/lamp

xdebug.default_enable=1
xdebug.remote_enable=1
xdebug.remote_handler=dbgp

xdebug.remote_port=9001
xdebug.remote_autostart=0

xdebug.remote_connect_back=1
xdebug.idekey="PHPSTORM"

xdebug.max_nesting_level = 250

我用的是PHP-FPM,所以9000端口已经被占了,改成9001试试,应该可以的!

我终于能够在 MacBook 上使用它了。我使用 Symfony4 作为 Rest API,它位于 docker 容器和 Apache 服务器中。

  1. dockerfile中,(确保将其几乎放在文件末尾,以免在运行 composercli)

    RUN yes | pecl install xdebug \
    && echo "zend_extension=$(find /usr/local/lib/php/extensions/ -name xdebug.so)" > /usr/local/etc/php/conf.d/xdebug.ini \
    && echo "xdebug.remote_enable=on" >> /usr/local/etc/php/conf.d/xdebug.ini \
    && echo "xdebug.remote_autostart=1" >> /usr/local/etc/php/conf.d/xdebug.ini \
    && echo "xdebug.remote_port = 9000" >> /usr/local/etc/php/conf.d/xdebug.ini \
    && echo "xdebug.remote_handler = "dbgp"" >> /usr/local/etc/php/conf.d/xdebug.ini \
    && echo "xdebug.remote_connect_back = 0" >> /usr/local/etc/php/conf.d/xdebug.ini \
    && echo "xdebug.remote_host = "host.docker.internal"" >> /usr/local/etc/php/conf.d/xdebug.ini
    

    host.docker.internal 适用于 Mac 和 Windows。 More Information

  2. 在主机中,打开PhpStorm

    • Preferences -> Languages & Frameworks -> PHP -> Debug -> DBGp Proxy

      IDE 键:XDEBUG_ECLIPSE HOST:{{主机IP地址}} 端口:9000

    • 转到Preferences -> Languages & Frameworks -> PHP -> Servers

      单击 +,为其命名,主机为 the address on which your application is running(在我的例子中为 localhost),应用程序的端口号(8090 为我的申请)

      我无法弄清楚路径映射应该是什么,所以我没有涵盖那部分。如果您不设置它并没有什么害处,但会使您的应用程序变慢几秒钟。

      如果您无法确定映射,请确保取消选中复选框 Force break at first line when no mapping specified,可以在 Preferences -> Languages & Frameworks -> PHP -> Debug

  3. 安装 chrome 插件 Xdebug Helper,然后按照那里提供的说明进行操作。

  4. 最后一步是在 PhpStorm 中启用侦听器。 Run -> Start Listening for PHP Debug Connections

  5. 通过设置断点来调试。