PHP生产环境部署核心是安全、稳定、可维护:需屏蔽默认风险、限制权限、适配Nginx+PHP-FPM、启用必要扩展、关闭display_errors与expose_php、删除示例文件、禁用多余扩展及phpinfo()。

PHP在Linux上部署生产环境,核心是安全、稳定、可维护——不是装上就行,而是要屏蔽默认风险、限制权限、适配Web服务器、启用必要扩展,并做好日志与错误控制。
基础安装:推荐用包管理器而非源码编译
Ubuntu/Debian用apt,CentOS/RHEL用dnf或yum。例如Ubuntu 22.04:
- sudo apt update && sudo apt install php8.1 php8.1-cli php8.1-fpm php8.1-mysql php8.1-curl php8.1-gd php8.1-mbstring php8.1-xml php8.1-zip
- 避免php裸包(可能拉低版本),明确指定版本号
- 不装php8.1-dev或php8.1-xdebug到生产环境
关键配置:修改php.ini与www.conf
路径通常为/etc/php/8.1/fpm/php.ini和/etc/php/8.1/fpm/pool.d/www.conf:
- display_errors = Off,log_errors = On,error_log = /var/log/php/error.log
- expose_php = Off(隐藏PHP版本头)
- upload_max_filesize和post_max_size按业务调,别盲目设2G
- 在www.conf里设user = www-data、group = www-data,禁用clear_env = no防止环境泄露
与Web服务器协同:Nginx + PHP-FPM是最简稳态组合
Nginx不解析PHP,靠FastCGI转发给PHP-FPM:
立即学习“PHP免费学习笔记(深入)”;
- 确保location ~ \.php$块中包含fastcgi_pass unix:/run/php/php8.1-fpm.sock;
- 加fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;防路径穿越
- 重启顺序:sudo systemctl restart php8.1-fpm && sudo systemctl reload nginx
安全加固:三件套不能少
上线前必做:
- 删掉/usr/share/php*/info.php等示例文件
- 用php -m检查是否有多余扩展(如shmop、sysvsem);不需要的用sudo phpdismod 扩展名禁用
- 设置open_basedir(在pool配置里)限定脚本可访问路径,例如open_basedir = /var/www/example.com/:/tmp/
基本上就这些。不复杂但容易忽略细节,尤其错误日志路径权限、socket文件属主、以及暴露phpinfo——生产环境连phpinfo()函数都建议在disable_functions里禁掉。











