【问题标题】:Debugging Symfony REST API using PhpStorm & Xdebug使用 PhpStorm 和 Xdebug 调试 Symfony REST API
【发布时间】:2018-07-19 10:20:51
【问题描述】:

我正在尝试为 PhpStorm 设置 xdebug。

设置如下:

  • Symfony 应用程序位于 Docker 容器内
  • 我将它用于 REST API 调用

到目前为止我所尝试的:

  • 已安装 Xdebug - reference

    RUN pecl install xdebug
    RUN docker-php-ext-enable 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 应用程序在该端口上运行。我使用 localhost:8090/ 在本地访问网站):

现在,当我调用 API 时,什么也没有发生。它不会在断点处停止。

有人帮帮我吗?

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

【问题讨论】:

    标签: php symfony docker phpstorm xdebug


    【解决方案1】:

    这是我在 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。试试看,应该可以的!

    【讨论】:

    • 你在使用 fpm 吗?你也改变了phpstorm中的端口吗?
    • 我正在使用FROM php:7-apache-jessie
    • phpinfo 说 xdebug 正在监听哪个端口?你在IDE里设置的一样吗?
    • 我没有找到任何相关的信息。请告诉我变量名是什么?我可以看到XDEBUG_CONFIG remote_host={{my_ip_Add}} and PHP_XDEBUG_ENABLED=1 和其他东西。我已将其设置为 9000 而不是 9001(来自您的回答)
    • @Pradeepb 在 php 文件中使用 <?php phpinfo(); 并从浏览器访问它。如果加载正确,您应该会看到a section for XDebug,如果还没有,您可能需要重新启动 apache。
    【解决方案2】:

    我终于可以让它在 MacBook 上运行。我使用Symfony4 作为 Docker 容器和 Apache 服务器内的 Rest API。

    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. 通过设置断点享受调试。

    【讨论】:

      猜你喜欢
      • 2014-01-16
      • 2014-06-01
      • 1970-01-01
      • 2015-06-24
      • 2014-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-06
      相关资源
      最近更新 更多