我正在开发一个带有docker的wordpress网站。我需要编写PHP代码,所以我想看看我的php错误与apache错误日志。
在非docker环境中,我会做这样的事情:
tail -100f /var/log/apache2/error.log
使用docker方案,如果我登录我的apache容器,我的apache日志是旧的并且是空的:
$ docker exec -t -i apache /bin/bash
root@d47b168d8c4b:/var/www/html# cd /var/log/apache2/
root@d47b168d8c4b:/var/log/apache2# ls -alrt
total 8
-rw-r----- 1 www-data www-data 0 Apr 30 04:34 other_vhosts_access.log
-rw-r----- 1 www-data www-data 0 Apr 30 04:34 error.log
-rw-r----- 1 www-data www-data 0 Apr 30 04:34 access.log
drwxr-x--- 2 www-data www-data 4096 Apr 30 04:34 .
drwxr-xr-x 11 root root 4096 Apr 30 05:58 ..
root@d47b168d8c4b:/var/log/apache2#
也许日志在不同的地方所以我去apache虚拟主机配置和启用站点的文件夹是空的!
在sites-availability中我有这样的配置: ErrorLog $ {APACHE_LOG_DIR} /error.log CustomLog $ {APACHE_LOG_DIR} /access.log合并
其中$ {APACHE_LOG_DIR}是/ var / www / apache2
我的wordpress图片是官方图片:https://registry.hub.docker.com/_/wordpress/ 我查看dockerfile搜索提示,但我没有看到配置相关。它基于FROM php:5.6-apache所以我也看看dockerfile但我没有得到任何日志配置。
目前,这是我获取日志的唯一方法:
docker logs apache
apache是我的容器名称。但是我只获得apache access-logs,我没有得到任何错误日志
答案 0 :(得分:0)
我有同样的问题。为了解决这个问题,我添加了一个php配置,打开log_errors并指定error_log位置。
例如:
# cat /usr/local/etc/php/conf.d/php_error.ini
log_errors = on
error_log = /var/log/apache2/php_err.log
您还需要创建php_err.log文件并设置适当的权限:
touch /var/log/apache2/php_err.log
chown www-data:www-data /var/log/apache2/php_err.log
这是一个执行此操作的Dockerfile:
FROM wordpress:latest
MAINTAINER moo
RUN touch /var/log/apache2/php_err.log && chown www-data:www-data /var/log/apache2/php_err.log
COPY php_error.ini /usr/local/etc/php/conf.d/php_error.ini