先运行 php -v 确认 php 已安装且版本正确;再用 which php 查路径,确保与 nginx/fpm 配置一致;检查 php-fpm 是否 active;验证 nginx 的 fastcgi_pass、script_filename、root 和 index 配置;确认目录权限、selinux 状态及 rds/redis 网络连通性。

怎么确认 ECS 上 PHP 环境是否就绪
别急着传代码,先看 PHP 有没有、版本对不对、能不能被 Web 服务调用。很多部署失败其实卡在这一步。
- SSH 连上 ECS 后直接运行
php -v,看是否输出版本号;如果报command not found,说明 PHP 根本没装 - 运行
which php,确认二进制路径,常见是/usr/bin/php或/usr/local/bin/php,和后续 Nginx/FPM 配置要一致 - 如果是用宝塔或 AMH 等面板,PHP 可能装在私有路径(如
/www/server/php/82/bin/php),php -v能用,但 Nginx 的fastcgi_pass指向的 socket 或端口可能没开 - 检查
php-fpm是否运行:systemctl status php-fpm(CentOS/RHEL)或systemctl status php8.2-fpm(Ubuntu),状态不是active (running)就得手动启
Nginx 怎么把请求正确转给 PHP-FPM
这是最常出问题的一环:页面空白、502 Bad Gateway、或者直接下载 .php 文件——基本都是 FastCGI 链路断了。
- 确认 Nginx 配置里 location ~ \.php$ 块存在,且包含
fastcgi_pass,不要写成proxy_pass -
fastcgi_pass推荐用 Unix socket(比如unix:/run/php/php8.2-fpm.sock),比127.0.0.1:9000更快也更少端口冲突;但 socket 路径必须和php-fpm.conf里的listen =完全一致 - 务必加上
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;,漏掉这行,PHP 就找不到要执行的文件,返回 404 或空白 - 检查
root指令是否指向你的项目目录,比如root /var/www/myapp;,否则$document_root展开错误,SCRIPT_FILENAME 就拼错路径
上传代码后为什么访问 403 或 404
权限和路径不匹配,比逻辑错误还难排查。
- 确保项目根目录(如
/var/www/myapp)对 Nginx 工作用户可读,常见用户是www-data(Ubuntu)或nginx(CentOS);运行ls -ld /var/www/myapp,若属主不是它,用chown -R www-data:www-data /var/www/myapp - 目录需有执行权限(
x),否则 Nginx 进不去;chmod 755 /var/www/myapp是安全底线,别直接777 - 入口文件(如
index.php)必须在 Nginxindex指令列出,例如index index.php index.html;,否则访问目录时不会自动找index.php - 检查 SELinux(CentOS 7/8 默认开启):
getenforce若返回Enforcing,临时关掉试试:setenforce 0;长期方案是配策略,不是关它
如何验证 PHP 能连上数据库和缓存
应用跑起来不代表功能可用,数据库连接、Redis 写入这些往往在部署后才暴露。
- 单独写个
test_db.php放在网站根目录,用mysqli_connect()或PDO连你配置的 MySQL 地址/账号/库名,别依赖框架封装 - 阿里云 RDS 实例默认禁止外网访问,ECS 必须在同地域同 VPC,并且安全组放行对应端口(MySQL 默认 3306);本地测试通 ≠ ECS 上通
- Redis 同理,
redis-cli -h your-redis-host -p 6379 ping在 ECS 终端执行,看是否回PONG;阿里云 Redis 默认开启密码认证,PHP 客户端初始化时必须传auth参数 - 注意时区:ECS 系统时区可能和 RDS 不一致,
date_default_timezone_set('Asia/Shanghai')最好显式设,避免日志、缓存过期时间错乱
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











