PHP网站Linux部署核心是四件事对齐:环境版本匹配(TP8需PHP≥8.0.0)、Web根目录精准指向public、PHP-FPM与Nginx通信畅通、目录权限合理分配;须指定PHP版本安装扩展,root设为public路径,用try_files路由,PHP-FPM与Nginx用户一致,并上线前清缓存、关调试、删冗余文件。

PHP网站项目在Linux服务器上部署,核心是让代码能被Web服务器正确解析、安全运行且对外可访问。关键不在装多少软件,而在于四件事对齐:环境版本匹配、Web根目录精准指向、PHP-FPM与Nginx通信畅通、目录权限合理分配。
选对PHP版本并装齐必需扩展
别直接apt install php——它可能装出不兼容的版本。ThinkPHP 6.1+ 要求 PHP ≥ 7.4,TP8 强制要求 PHP ≥ 8.0.0;Laravel 10 推荐 PHP 8.1+。安装时必须明确指定版本,并一次性装齐依赖扩展:
- Ubuntu/Debian(以PHP 8.1为例):
sudo apt install php8.1 php8.1-fpm php8.1-mysql php8.1-curl php8.1-mbstring php8.1-xml php8.1-zip php8.1-opcache php8.1-fileinfo -y - RHEL/CentOS 8+(需先启用Remi源):
sudo dnf module enable php:remi-8.1 && sudo dnf install php php-mysqlnd php-curl php-mbstring php-xml php-zip php-opcache php-fileinfo -y - 装完立刻验证:
php -v看版本,php -m | grep -E "mysql|mbstring|curl|fileinfo"确认扩展已加载
Nginx必须指向public目录,不是项目根目录
这是90%白屏和404的根源。ThinkPHP、Laravel等现代框架都把index.php放在public/子目录下,敏感配置(app/、config/、.env)绝不能被直接访问。
- 站点配置中
root必须设为/var/www/myapp/public,不是/var/www/myapp - Nginx location块推荐用
try_files规则,稳定可靠:location / { try_files $uri $uri/ /index.php?$query_string; } - PHP处理块要确保
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;——用$realpath_root而非$document_root,避免软链接环境下报“No input file specified”
PHP-FPM用户权限与Nginx协同一致
PHP-FPM进程若以www-data身份运行,Nginx worker也得是www-data(Ubuntu/Debian)或nginx(RHEL系),否则socket连接被拒绝,出现502错误。
立即学习“PHP免费学习笔记(深入)”;
- 编辑
/etc/php/*/fpm/pool.d/www.conf(Ubuntu)或/etc/php-fpm.d/www.conf(RHEL) - 确认三项关键设置:
–listen = /run/php/php8.1-fpm.sock(Unix socket更高效)
–listen.owner = www-data且listen.group = www-data
–user = www-data和group = www-data(保持完全一致) - 改完重启服务:
sudo systemctl restart php8.1-fpm nginx
上线前必做的三件安全与运行准备
代码上传不等于能跑起来。跳过这步,大概率遇到空白页、500错误或调试信息泄露。
-
删掉本地runtime缓存:上传前清空项目根目录下的
runtime/(ThinkPHP)或storage/framework/(Laravel),保留空目录结构,再设权限:chmod -R 755 runtime/,确保www-data可写 -
关闭调试模式:检查
.env文件,确认APP_DEBUG=false、APP_ENV=production,数据库配置留空或填占位符,后续在面板或配置文件中单独填写 -
删开发残留:移除
.env.example、README.md、phpunit.xml等非生产文件;执行composer install --optimize-autoloader --no-dev,不装测试和调试依赖



















