我正在尝试从我的PHP Docker中获取错误日志。我发现error.log文件无处可去,因此修改了我的dockerfile如下:
FROM php:7.4-apache
RUN a2enmod rewrite
RUN docker-php-ext-install mysqli pdo pdo_mysql; \
docker-php-ext-enable mysqli pdo pdo_mysql;
# Redirect apache log files to stdout, see https://github.com/moby/moby/issues/19616
RUN ln -sf /proc/1/fd/1 /var/log/apache2/access.log
RUN ln -sf /proc/1/fd/1 /var/log/apache2/error.log
生成以下文件:
# ls -l /var/log/apache2/
total 0
lrwxrwxrwx 1 root root 12 May 11 18:25 access.log -> /proc/1/fd/1
lrwxrwxrwx 1 root root 12 May 11 18:25 error.log -> /proc/1/fd/1
lrwxrwxrwx 1 www-data www-data 11 Nov 15 04:17 other_vhosts_access.log -> /dev/stdout
这一部分现在正在发挥作用:运行echo "test" > /var/log/apache2/error.log
会对docker日志进行写测试。另外,文件权限没有限制(请参阅https://stackoverflow.com/a/12566881/3519951)。
我添加了一个崩溃调用dfgdfga.test()
,但错误没有显示。如果我创建一个日志文件而不是重定向到docker输出,情况也是一样。它仍然是空的。
1条答案
按热度按时间zxlwwiss1#
当我复习这个问题的时候,我把它弄明白了。分享在这里,如果它可能会有所帮助。
运行
php -i | grep log
时,我发现:在我看来,这是一个令人惊讶的默认值,但足以解释日志的缺失。因此,我创建了一个小的ini文件(inspired from this article),将其直接传输到docker日志:
并将其复制到dockerfile中,如下所示: