PHP-FPM config

servers Aug 30, 2020

In your php-fpm.conf the most important values are:

error_log = /var/log/php/fpm-errors.log
daemonize = yes

And in your php.ini:

# The most important values:

# Security related
expose_php = Off

# Execution time & memory related
max_execution_time = 30
max_input_time = 60
memory_limit = 128M

# Log related
log_errors = On
error_log = /var/log/php/errors.log

# Upload related
post_max_size = 128M
upload_max_filesize = 64M
max_file_uploads = 10

# Use correct timezone by default
date.timezone = Europe/Berlin

# use strict mode for sessions
session.use_strict_mode = 1


# =========================================
# Production settings
# =========================================
realpath_cache_size = 4M
realpath_cache_ttl = 600

[opcache]
opcache.enable=1
opcache.memory_consumption=256M
opcache.interned_strings_buffer=24
opcache.max_accelerated_files=25000
opcache.use_cwd=0
opcache.validate_timestamps=0
opcache.revalidate_path=0
opcache.save_comments=1
opcache.enable_file_override=1
opcache.consistency_checks=0

Pool Config

For servers with a single projects.

The most important settings are:

[example.org]

user = example_org # Use project user + group
group = example_org

listen = 127.0.0.1:9100 # number consecutively
listen.allowed_clients = 127.0.0.1

pm = ondemand
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3

pm.process_idle_timeout = 10s
pm.max_requests = 500

catch_workers_output = yes

php_admin_value[error_log] = /var/log/php/$pool-errors.log
php_admin_flag[log_errors] = on

Pool Config (shared server)

For servers with a single project.

The most important settings are:

[example-org]

user = www-data
group = www-data

listen = 127.0.0.1:9100  # number consecutively
listen.allowed_clients = 127.0.0.1

pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3

pm.process_idle_timeout = 10s
pm.max_requests = 500

catch_workers_output = yes

php_admin_value[error_log] = /var/log/php/$pool-errors.log
php_admin_flag[log_errors] = on

Photo credit: Ray Zhou

Tags

Great! You've successfully subscribed.
Great! Next, complete checkout for full access.
Welcome back! You've successfully signed in.
Success! Your account is fully activated, you now have access to all content.