Skip to content

Commit fe379ae

Browse files
committed
Fix docker logs for PHP mail func logging
1 parent 389b962 commit fe379ae

4 files changed

Lines changed: 68 additions & 14 deletions

File tree

Dockerfiles/prod/data/docker-entrypoint.d/31-postfix.sh

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@ set_postfix() {
1717
local username="${2}"
1818
local groupname="${3}"
1919
local php_ini_dir="${4}"
20-
local debug="${5}"
20+
local php_mail_log="${5}"
21+
local docker_logs="${6}"
22+
local debug="${7}"
2123

2224
local php_ini_file="${php_ini_dir}/devilbox-runtime-sendmail.ini"
2325
local catch_all=
@@ -37,9 +39,23 @@ set_postfix() {
3739
echo "sendmail_path = $( which sendmail ) -t -i";
3840
echo ";mail.force_extra_parameters =";
3941
echo "mail.add_x_header = On";
40-
echo "mail.log = /var/log/php/mail.log";
42+
echo "mail.log = ${php_mail_log}";
4143
} > "${php_ini_file}"
4244

45+
# PHP mail function logs to file
46+
if [ "${docker_logs}" != "1" ]; then
47+
# Fix PHP mail log file dir/file and permissions
48+
if [ ! -d "$( dirname "${php_mail_log}" )" ]; then
49+
run "mkdir -p $( dirname "${php_mail_log}" )" "${debug}"
50+
fi
51+
if [ ! -f "${php_mail_log}" ]; then
52+
run "touch ${php_mail_log}" "${debug}"
53+
fi
54+
run "chown ${username}:${groupname} $( dirname "${php_mail_log}" )" "${debug}"
55+
run "chown ${username}:${groupname} ${php_mail_log}" "${debug}"
56+
run "chmod 0644 ${php_mail_log}" "${debug}"
57+
fi
58+
4359
# Add Mail dir/file if it does not exist
4460
if [ ! -d "/var/mail" ]; then
4561
run "mkdir /var/mail" "${debug}"

Dockerfiles/prod/data/docker-entrypoint.d/32-docker-logs.sh

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,26 @@ _log_to_files() {
5151
# Functions
5252
############################################################
5353

54+
###
55+
### Get info if we log to docker logs
56+
###
57+
is_docker_logs_enabled() {
58+
local env_varname="${1}"
59+
if env_set "${env_varname}"; then
60+
docker_logs="$( env_get "${env_varname}" )"
61+
if [ "${docker_logs}" = "1" ]; then
62+
# Use docker logs
63+
echo "1"
64+
return 0
65+
fi
66+
fi
67+
68+
# Use file based logging
69+
echo "0"
70+
return 1
71+
}
72+
73+
5474
###
5575
### Change PHP-FPM logging (file or docker logs)
5676
###

Dockerfiles/prod/data/docker-entrypoint.sh

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ CONFIG_DIR="/docker-entrypoint.d"
2121
# php.ini.d directory
2222
PHP_INI_DIR="/usr/local/etc/php/conf.d"
2323

24+
# This is the log file for any mail related functions
25+
PHP_MAIL_LOG="/var/log/mail.log"
26+
2427
# This file holds error and access log definitions
2528
FPM_CONF_LOGFILE="/usr/local/etc/php-fpm.d/logfiles.conf"
2629

@@ -69,12 +72,6 @@ set_gid "NEW_GID" "${MY_GROUP}" "/home/${MY_USER}" "${DEBUG_LEVEL}"
6972
set_timezone "TIMEZONE" "${PHP_INI_DIR}" "${DEBUG_LEVEL}"
7073

7174

72-
###
73-
### Setup postfix
74-
###
75-
set_postfix "ENABLE_MAIL" "${MY_USER}" "${MY_GROUP}" "${PHP_INI_DIR}" "${DEBUG_LEVEL}"
76-
77-
7875
###
7976
### Set Logging
8077
###
@@ -87,6 +84,18 @@ set_docker_logs \
8784
"${DEBUG_LEVEL}"
8885

8986

87+
###
88+
### Setup postfix
89+
###
90+
if is_docker_logs_enabled "DOCKER_LOGS" >/dev/null; then
91+
# PHP mail function should log to stderr
92+
set_postfix "ENABLE_MAIL" "${MY_USER}" "${MY_GROUP}" "${PHP_INI_DIR}" "/proc/self/fd/2" "1" "${DEBUG_LEVEL}"
93+
else
94+
# PHP mail function should log to file
95+
set_postfix "ENABLE_MAIL" "${MY_USER}" "${MY_GROUP}" "${PHP_INI_DIR}" "${PHP_MAIL_LOG}" "0" "${DEBUG_LEVEL}"
96+
fi
97+
98+
9099
###
91100
### Validate socat port forwards
92101
###

Dockerfiles/work/data/docker-entrypoint.sh

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ CONFIG_DIR="/docker-entrypoint.d"
2121
# php.ini.d directory
2222
PHP_INI_DIR="/usr/local/etc/php/conf.d"
2323

24+
# This is the log file for any mail related functions
25+
PHP_MAIL_LOG="/var/log/mail.log"
26+
2427
# This file holds error and access log definitions
2528
FPM_CONF_LOGFILE="/usr/local/etc/php-fpm.d/logfiles.conf"
2629

@@ -69,12 +72,6 @@ set_gid "NEW_GID" "${MY_GROUP}" "/home/${MY_USER}" "${DEBUG_LEVEL}"
6972
set_timezone "TIMEZONE" "${PHP_INI_DIR}" "${DEBUG_LEVEL}"
7073

7174

72-
###
73-
### Setup postfix
74-
###
75-
set_postfix "ENABLE_MAIL" "${MY_USER}" "${MY_GROUP}" "${PHP_INI_DIR}" "${DEBUG_LEVEL}"
76-
77-
7875
###
7976
### Set Logging
8077
###
@@ -87,6 +84,18 @@ set_docker_logs \
8784
"${DEBUG_LEVEL}"
8885

8986

87+
###
88+
### Setup postfix
89+
###
90+
if is_docker_logs_enabled "DOCKER_LOGS" >/dev/null; then
91+
# PHP mail function should log to stderr
92+
set_postfix "ENABLE_MAIL" "${MY_USER}" "${MY_GROUP}" "${PHP_INI_DIR}" "/proc/self/fd/2" "1" "${DEBUG_LEVEL}"
93+
else
94+
# PHP mail function should log to file
95+
set_postfix "ENABLE_MAIL" "${MY_USER}" "${MY_GROUP}" "${PHP_INI_DIR}" "${PHP_MAIL_LOG}" "0" "${DEBUG_LEVEL}"
96+
fi
97+
98+
9099
###
91100
### Validate socat port forwards
92101
###

0 commit comments

Comments
 (0)