PHP在Linux环境部署指南_PHP生产环境安装配置说明

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

PHP在Linux上部署生产环境,核心是安全、稳定、可维护——不是装上就行,而是要屏蔽默认风险、限制权限、适配Web服务器、启用必要扩展,并做好日志与错误控制。

基础安装:推荐用包管理器而非源码编译

Ubuntu/Debian用apt,CentOS/RHEL用dnfyum。例如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-devphp8.1-xdebug到生产环境

关键配置:修改php.ini与www.conf

路径通常为/etc/php/8.1/fpm/php.ini/etc/php/8.1/fpm/pool.d/www.conf

  • display_errors = Offlog_errors = Onerror_log = /var/log/php/error.log
  • expose_php = Off(隐藏PHP版本头)
  • upload_max_filesizepost_max_size按业务调,别盲目设2G
  • www.conf里设user = www-datagroup = www-data,禁用clear_env = no防止环境泄露

与Web服务器协同:Nginx + PHP-FPM是最简稳态组合

Nginx不解析PHP,靠FastCGI转发给PHP-FPM:

  • 确保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检查是否有多余扩展(如shmopsysvsem);不需要的用sudo phpdismod 扩展名禁用
  • 设置open_basedir(在pool配置里)限定脚本可访问路径,例如open_basedir = /var/www/example.com/:/tmp/

基本上就这些。不复杂但容易忽略细节,尤其错误日志路径权限、socket文件属主、以及暴露phpinfo——生产环境连phpinfo()函数都建议在disable_functions里禁掉。