当 Xdebug 处于活动状态而不禁用 Xdebug 时,如何防止 PHP 错误日志中的完整堆栈跟踪?

How to prevent full stack traces in PHP error log when Xdebug is active without disabling Xdebug?

到目前为止,我还没有找到任何方法在不禁用 Xdebug 本身的情况下禁用 PHP 错误日志中的完整堆栈跟踪。 (使用 xdebug_disable();)但我想充分发挥 Xdebug 的潜力,只需要一个更干净、不那么臃肿的错误日志。

这甚至可能是不可能的,但我想确保没有其他可能性,例如将 Xdebugs 堆栈跟踪重定向到其他文件(我也尝试过但没有成功)或我没有考虑过的事情。

在浏览了 Xdebug 文档并尝试了所有格式化选项并尝试重定向 Xdebug 日志之后,似乎没有真正的解决方案,除了在开发过程中不需要时禁用 Xdebug。

因为我正在开发一个 dockerized 应用程序,所以我更改了 Dockerfile 以使用启用或禁用 Xdebug 的 ENV。

Dockerfile:

FROM php:7.0.31-apache-stretch
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
RUN echo 'xdebug.default_enable=${XDEBUG}' >> /usr/local/etc/php/conf.d/xdebug.ini \
    && echo 'xdebug.remote_enable=${XDEBUG}' >> /usr/local/etc/php/conf.d/xdebug.ini \
    && echo 'xdebug.remote_autostart=${XDEBUG}' >> /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

运行 使用上述 Dockerfile 构建的容器

  • 使用 --env XDEBUG=1
  • 启用 Xdebug(在日志中启用堆栈跟踪)
  • --env XDEBUG=0
  • 禁用了 Xdebug(日志中没有堆栈跟踪)

docker-compose.yml:

version: '2.4'
services:
  php-container:
    build:
      context: . #Path to Dockerfile
    environment:
      XDEBUG: 0 #1 enables Xdebug
    volumes:
      - "./src:/var/www/html/"