
crunchgeek/php-fpm开箱即用、多版本、功能全面的PHP-FPM Docker镜像,支持所有PHP项目(如WordPress和Laravel)。镜像并非轻量级,旨在开箱即支持尽可能多的功能,并可通过环境设置轻松开启/关闭。
PHP-FPM(FastCGI Process Manager)是PHP的替代FastCGI实现。
使用以下环境变量在容器启动时配置PHP进程管理器:
bashPHP_UID=1000 PHP_GID=1000 PHP_HOME=/app PHP_USER=php-fpm
将创建名为php-fpm的系统用户,UID:GID为1000:1000,主目录为/app,可在php-fpm池配置文件中引用。
bashPHP_INI_PATH=/path/to/php.ini
在php-fpm启动时包含指定的php.ini配置。支持通配符,可包含多个.ini配置文件。
bashPHP_POOL_PATH=/path/to/pool.conf
在php-fpm启动时包含指定的pool.conf配置。支持通配符,可包含多个.conf配置文件。
注意:默认会加载[***]池配置,除非指定自定义的[***]路径。
bashPHP_BOOT_SCRIPTS=/path/to/*.sh
在容器启动时、php-fpm启动前运行指定路径下的脚本(单个或多个)。适用于需要创建多个系统用户(如共享主机环境)的场景,可通过脚本预先创建用户。
bashPHP_CRONTABS_PATH=/path/to/cronttab_scripts
安装指定路径下的定时任务配置并启动crontab守护进程。
Laravel定时任务示例
bash# # Laravel任务调度器 # # 注意: # crontab的sh shell需要: # - php cli解释器的完整路径 # - 切换到laravel artisan所在目录 # - 文件末尾需留空行以保证cron文件有效 * * * * * php-cli cd /app && /usr/local/bin/php artisan schedule:run
bashNEWRELIC_LICENSE=license_string
启用NewRelic扩展以监控PHP应用性能。
从7.3版本开始,SendGrid不再支持用户名/密码认证,改用API密钥。
已弃用:
bashSMTP_LOGIN=sendgrid_login SMTP_PASSWORD=sendgrid_password
推荐使用API密钥:
bashSENDGRID_API_KEY=api_key_string
通过SendGrid配置默认邮件路由。适用于Google Cloud等默认阻止25端口SMTP的环境。
bashTEST_EMAIL=***
设置后,容器启动时会通过PHP mail函数向指定地址发送测试邮件。
支持Redis或Memcached作为PHP会话处理器。
bashPHP_SESSION_HANDLER=php_session_handler PHP_SESSION_PATH=php_session_path
修改默认PHP会话处理器,适用于集群环境中实现会话共享。
Redis会话示例
bashPHP_SESSION_HANDLER=redis PHP_SESSION_PATH=tcp://redis.host:6379
将php.ini全局会话处理器设置为Redis,连接redis.host:6379。
Memcached会话示例
bashPHP_SESSION_HANDLER=memcached PHP_SESSION_PATH=memcached.host:***
将php.ini全局会话处理器设置为Memcached,连接memcached.host:***。
bashSUPERVISORD_PATH=/path/to/supervisord.conf
自定义Supervisord配置以控制和监控容器内多个进程。示例配置可确保容器启动后不退出并将日志重定向到stdout:
bashcommand: [ "tail", '-f', '/var/log/supervisor/supervisord.log' ] healthcheck: test: /healthcheck retries: 3 timeout: 5s interval: 5s
shdocker pull crunchgeek/php-fpm:7.2
运行PHP-FPM镜像并挂载主机目录:
shdocker run -it --name php-fpm -v /path/to/your/app:/app crunchgeek/php-fpm:7.2 php script.php
或使用Docker Compose:
yamlversion: '3' services: php-fpm: container_name: php-fpm image: crunchgeek/php-fpm:7.3 entrypoint: php index.php volumes: - /path/to/your/app:/app
shdocker run --rm --name php-fpm -v /path/to/your/app:/app -p 8000:8000 crunchgeek/php-fpm:7.2 php -S 0.0.0.0:8000 /app/index.php
shdocker logs php-fpm
shdocker run --rm -it crunchgeek/php-fpm:7.2 php -m
从7.3升级到7.4时无法构建的扩展:
docker-php-ext-configure gd --with-png仅支持PNG(详情参见docker-library/php#912)

manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务