mirror of
https://github.com/devilbox/docker-php-fpm.git
synced 2025-12-13 12:31:14 +00:00
119 lines
2.9 KiB
Bash
Executable File
119 lines
2.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -e
|
|
set -u
|
|
set -o pipefail
|
|
|
|
|
|
############################################################
|
|
# Helper Functions
|
|
############################################################
|
|
|
|
_log_to_dockerlogs() {
|
|
local php_fpm_conf="${1}"
|
|
local php_ini_conf="${2}"
|
|
{
|
|
echo "[global]"
|
|
echo "error_log = /proc/self/fd/2"
|
|
echo "[www]"
|
|
echo "access.log = /proc/self/fd/2"
|
|
} > "${php_fpm_conf}"
|
|
{
|
|
echo "error_log = /proc/self/fd/2"
|
|
} > "${php_ini_conf}"
|
|
}
|
|
|
|
_log_to_files() {
|
|
local php_fpm_conf="${1}"
|
|
local php_ini_conf="${2}"
|
|
local log_dir="${3}"
|
|
local user="${4}"
|
|
local group="${5}"
|
|
local debug="${6}"
|
|
|
|
# Create Log directory and files
|
|
if [ ! -d "${log_dir}" ]; then
|
|
run "mkdir -p ${log_dir}" "${debug}"
|
|
fi
|
|
if [ ! -f "${log_dir}/php-fpm.access" ]; then
|
|
run "touch ${log_dir}/php-fpm.access" "${debug}"
|
|
fi
|
|
if [ ! -f "${log_dir}/php-fpm.error" ]; then
|
|
run "touch ${log_dir}/php-fpm.error" "${debug}"
|
|
fi
|
|
run "chown -R ${user}:${group} ${log_dir}" "${debug}"
|
|
run "chmod 0755 ${log_dir}" "${debug}"
|
|
{
|
|
echo "[global]"
|
|
echo "error_log = ${log_dir}/php-fpm.error"
|
|
echo "[www]"
|
|
echo "access.log = ${log_dir}/php-fpm.access"
|
|
} > "${php_fpm_conf}"
|
|
{
|
|
echo "error_log = ${log_dir}/php-fpm.error"
|
|
} > "${php_ini_conf}"
|
|
}
|
|
|
|
|
|
############################################################
|
|
# Functions
|
|
############################################################
|
|
|
|
###
|
|
### Get info if we log to docker logs
|
|
###
|
|
is_docker_logs_enabled() {
|
|
local env_varname="${1}"
|
|
if env_set "${env_varname}"; then
|
|
docker_logs="$( env_get "${env_varname}" )"
|
|
if [ "${docker_logs}" = "1" ]; then
|
|
# Use docker logs
|
|
echo "1"
|
|
return 0
|
|
fi
|
|
fi
|
|
|
|
# Use file based logging
|
|
echo "0"
|
|
return 1
|
|
}
|
|
|
|
|
|
###
|
|
### Change PHP-FPM logging (file or docker logs)
|
|
###
|
|
set_docker_logs() {
|
|
local env_varname="${1}"
|
|
local log_dir="${2}"
|
|
local php_fpm_conf="${3}"
|
|
local php_ini_conf="${4}"
|
|
local user="${5}"
|
|
local group="${6}"
|
|
local debug="${7}"
|
|
|
|
local docker_logs=
|
|
|
|
if ! env_set "${env_varname}"; then
|
|
log "info" "\$${env_varname} not set." "${debug}"
|
|
log "info" "Logging to docker logs (stdout and stderr)." "${debug}"
|
|
_log_to_dockerlogs "${php_fpm_conf}" "${php_ini_conf}"
|
|
else
|
|
docker_logs="$( env_get "${env_varname}" )"
|
|
|
|
# Disable docker logs and log to files
|
|
if [ "${docker_logs}" = "0" ]; then
|
|
log "info" "\$${env_varname} set to 0. Logging to files under: ${log_dir}" "${debug}"
|
|
log "info" "Make sure to mount this directory in order to view logs" "${debug}"
|
|
_log_to_files "${php_fpm_conf}" "${php_ini_conf}" "${log_dir}" "${user}" "${group}" "${debug}"
|
|
|
|
# Keep docker logs
|
|
elif [ "${docker_logs}" = "1" ]; then
|
|
log "info" "\$${env_varname} set to 1. Logging to docker logs (stdout and stderr)." "${debug}"
|
|
_log_to_dockerlogs "${php_fpm_conf}" "${php_ini_conf}"
|
|
else
|
|
log "err" "Invalid value for \$${env_varname}. Can only be 0 or 1. Provided: ${docker_logs}" "${debug}"
|
|
exit 1
|
|
fi
|
|
fi
|
|
}
|