-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathstart-php-fpm.sh
More file actions
63 lines (53 loc) · 2.06 KB
/
start-php-fpm.sh
File metadata and controls
63 lines (53 loc) · 2.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#!/bin/bash
set -e
# Default configuration
PHP_VERSION=${PHP_VERSION:-"8.4"}
PHP_CONFIG_DIR=${PHP_CONFIG_DIR:-"/etc/php/${PHP_VERSION}"}
# Read paths from config files
PHP_FPM_CONFIG="${PHP_CONFIG_DIR}/fpm/php-fpm.conf"
PHP_POOL_CONFIG="${PHP_CONFIG_DIR}/fpm/pool.d/www.conf"
# Extract paths from configs
if [ -f "${PHP_FPM_CONFIG}" ]; then
PHP_ERROR_LOG=$(grep -oP 'error_log\s*=\s*\K[^\n]+' "${PHP_FPM_CONFIG}" | tr -d ' ' || echo "/var/log/php/fpm.log")
else
PHP_ERROR_LOG="/var/log/php/fpm.log"
fi
if [ -f "${PHP_POOL_CONFIG}" ]; then
PHP_SOCKET_FILE=$(grep -oP 'listen\s*=\s*\K[^\n]+' "${PHP_POOL_CONFIG}" | tr -d ' ' || echo "/run/php/php${PHP_VERSION}-fpm.sock")
else
PHP_SOCKET_FILE="/run/php/php${PHP_VERSION}-fpm.sock"
fi
# Derive PID file path
PHP_PID_FILE="/run/php/php${PHP_VERSION}-fpm.pid"
# Trap termination signals for graceful shutdown
trap 'echo "ℹ️ Service: Shutting down PHP-FPM..."; kill $(jobs -p); wait; exit 0;' SIGTERM SIGINT
# Clean up any old process files
echo " * Cleaning up old process files..."
rm -f "${PHP_PID_FILE}" "${PHP_SOCKET_FILE}" 2>/dev/null || true
# Display current configuration
echo "ℹ️ Service: Current PHP-FPM configuration:"
echo " NAME VALUE"
echo " ---- -----"
if [ -f "${PHP_POOL_CONFIG}" ]; then
# First line is [www], handle it separately
echo " [www] "
# Rest of the configuration
grep -v '^;' "${PHP_POOL_CONFIG}" | grep -v '^$' | grep -v '\[www\]' | while IFS='=' read -r key value; do
if [ -n "$key" ]; then
printf " %-15s %s\n" "${key// /}" "${value// /}"
fi
done
else
echo "❌ Service: Pool configuration not found at ${PHP_POOL_CONFIG}"
exit 1
fi
# Show important paths
echo "
ℹ️ Service: Important paths:"
echo " Config file ${PHP_FPM_CONFIG}"
echo " Pool config ${PHP_POOL_CONFIG}"
echo " Socket ${PHP_SOCKET_FILE}"
echo " Error log ${PHP_ERROR_LOG}"
# Start PHP-FPM
echo " * Starting PHP-FPM..."
exec php-fpm"${PHP_VERSION}" --nodaemonize --fpm-config "${PHP_FPM_CONFIG}" 2>&1