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

时间:2019-03-20 10:56:34

标签: php xdebug

到目前为止,我还没有找到任何方法在不禁用Xdebug本身的情况下禁用PHP错误日志中的完整堆栈跟踪。 (使用xdebug_disable();)但我想充分利用Xdebug的潜力,同时使用一个更干净,更不膨胀的错误日志。

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

1 个答案:

答案 0 :(得分:0)

浏览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/"