php网站上线前须确认服务器环境匹配:检查php版本与扩展、web服务器配置、文件权限、环境变量安全设置及上线后缓存清理、调试关闭与https强制。

PHP网站上线前必须确认的服务器环境
不是所有Linux服务器装了PHP就能跑你的网站,关键看版本和扩展是否匹配。比如用Laravel 10需要PHP 8.1+,而很多VPS默认装的是PHP 7.4;又比如你的代码用了mbstring或pdo_mysql,但服务器没启用这些扩展,访问直接500错误。
实操建议:
立即学习“PHP免费学习笔记(深入)”;
- 登录服务器后先运行
php -v确认PHP主版本,再用php -m检查必需扩展是否在列表里 - 如果用Nginx,务必确认
fastcgi_pass指向正确的PHP-FPM socket或端口(常见坑:/run/php/php8.1-fpm.sockvs127.0.0.1:9000) - Apache用户注意
mod_rewrite是否启用,否则Laravel/ThinkPHP的路由会404
上传代码后权限与路径的典型问题
FTP或SCP传完文件,常出现“Permission denied”或“No input file specified”,多半是权限或Web根目录配置错位。Web服务器(如www-data或nginx用户)必须有读取index.php的权限,且对storage、bootstrap/cache等目录有写权限。
实操建议:
立即学习“PHP免费学习笔记(深入)”;
- 把代码放到非
/var/www/html的独立目录(如/var/www/myapp),再在虚拟主机配置中明确指定root,避免和默认站点冲突 - 运行
chown -R www-data:www-data /var/www/myapp(Ubuntu/Debian)或chown -R nginx:nginx /var/www/myapp(CentOS/RHEL) -
storage和bootstrap/cache必须可写:用chmod -R 775 storage bootstrap/cache,别直接777——线上环境不安全
环境变量与配置文件怎么安全切换
.env不能直接传到线上,尤其含数据库密码、API密钥。硬编码进config/文件又难维护。正确做法是让PHP从系统环境变量或Web服务器配置中读取。
实操建议:
立即学习“PHP免费学习笔记(深入)”;
- Laravel用户:删掉线上
.env,改用putenv('APP_ENV=production')或在PHP-FPM pool配置里加env[APP_KEY]="xxx" - Nginx下可通过
fastcgi_param传递:在server块里加fastcgi_param APP_ENV "production"; - 数据库密码这类敏感项,不要写死在配置里;用
getenv('DB_PASSWORD')+ 系统级export DB_PASSWORD="xxx"(需确保PHP能读取系统env,检查variables_order是否含E)
上线后必做的三件事
代码跑起来不等于上线完成。缓存没清、日志没开、HTTPS没配,第二天就可能被爬虫打挂或暴露调试信息。
实操建议:
立即学习“PHP免费学习笔记(深入)”;
- 清空所有缓存:
php artisan config:clear(Laravel)、php think clear(ThinkPHP),别依赖自动检测 - 关掉调试模式:
APP_DEBUG=false必须生效,否则Whoops!错误页会泄露完整路径和代码片段 - 强制HTTPS:Nginx加
return 301 https://$host$request_uri;,Apache用RewriteRule,同时确认SSL证书已部署(推荐用certbot自动续期)
最易被忽略的是日志轮转和storage/logs磁盘占用——放任不管,三个月后可能填满整个分区。











