PHP文件上传后打不开,首要确认是否置于Web服务器根目录(如Apache的/var/www/html或Nginx的/usr/share/nginx/html),并确保PHP模块已启用、.php请求被正确路由至PHP-FPM,同时检查文件权限、大小写及错误日志。

PHP文件传到服务器后打不开?先确认是否真在Web根目录
本地双击能运行的 .php 文件,上传后直接访问 URL 却报 404 或下载源码,大概率是没放对位置。Web 服务器(如 Apache/Nginx)只解析特定目录下的 PHP,不是随便扔进去就能执行。
- Apache 默认 Web 根目录通常是
/var/www/html(Ubuntu/Debian)或/var/www(CentOS/RHEL),确认你上传的目标路径属于该目录下 - Nginx 常见配置为
root /usr/share/nginx/html;,需与server块中定义的root一致 - 别用 FTP 上传到用户主目录(如
/home/username/)就以为能访问——除非你额外配了 alias 或虚拟主机 - 上传后用 SSH 执行
ls -l /var/www/html/看文件权限,确保 Web 进程用户(如www-data或nginx)有读取权
PHP没启用?检查模块加载和MIME类型
即使文件在正确路径,如果 PHP 模块没启用或 Nginx/Apache 没把 .php 映射给 PHP-FPM 处理,请求仍会返回源码或 502。
- Apache:确认已启用
libapache2-mod-php(Debian)或php模块(RHEL),并重启服务:sudo systemctl restart apache2 - Nginx:必须显式配置
location ~ \.php$块,转发到fastcgi_pass 127.0.0.1:9000或unix:/run/php/php8.1-fpm.sock;漏掉这步,Nginx 就当静态文件处理 - 用
php -v验证 CLI 版本,但注意:CLI 和 Web SAPI 可能不同——还要看phpinfo()输出里的Server API是否为FPM/FastCGI或apache2handler
常见报错直接对应排查点
看到具体错误信息,比盲目重装快得多:
-
File not found. (404)→ 路径不对、Nginxroot配错、或 .php 文件名大小写不一致(Linux 区分大小写) -
Primary script unknown→ Nginx 的fastcgi_param SCRIPT_FILENAME路径拼错,常见于用$document_root$fastcgi_script_name但$document_root指向错误 - 空白页 + 日志里
PHP Parse error→ 代码语法问题,但 Web 未开启display_errors,需查/var/log/php8.1-fpm.log或/var/log/apache2/error.log - 下载 .php 文件本身 → PHP 模块完全未生效,或 Nginx/Apache 根本没收到 .php 请求(比如被其他 location 拦截)
上传后别跳过基础验证步骤
别假设“传上去就完事”,三行命令快速兜底:
立即学习“PHP免费学习笔记(深入)”;
curl -I http://your-domain.com/test.php # 看 HTTP 状态码和 Content-Type
ls -l $(php -r "echo ini_get('extension_dir');") | grep mysqli # 确认扩展存在(如需数据库)
php -m | grep pdo_mysql # CLI 下验证扩展加载,再比对 phpinfo() 中 Web SAPI 的扩展列表很多线上环境缺扩展(如 mbstring、curl)、时区未设(date.timezone)、或 open_basedir 限制太死——这些都不会在上传时提醒你,但一调接口就崩。











