You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker Compose下Nginx通过FastCGI调用PHP-FPM时找不到index.php

解决Nginx+PHP-FPM(Docker Compose)中注释root指令后文件找不到的问题

我来帮你捋清楚这个问题哈~咱们先拆解下报错的核心原因:

当你注释掉Nginx配置里的root /var/www/code后,Nginx会自动使用它的默认根目录/etc/nginx/html。而Nginx处理PHP请求时,是通过FastCGI把要执行的文件路径传给PHP-FPM的——具体来说,就是通过SCRIPT_FILENAME这个参数,它的值是$document_root$fastcgi_script_name,其中$document_root就是你设置的root路径(没设置就用默认值)。

这就导致了矛盾:Nginx传给PHP-FPM的路径是/etc/nginx/html/index.php,但你的PHP代码明明存在PHP-FPM容器的/var/www/code目录里,PHP-FPM在自己容器里找这个默认路径的文件,自然找不到,就报了那个错。

正确的配置方案

你需要确保两个关键点:Nginx的root路径和PHP-FPM的代码目录一致,同时FastCGI参数正确传递文件路径。

1. 修正Nginx的site.conf配置

必须保留root指令,并且指向PHP-FPM容器里的代码目录(也就是/var/www/code),完整的server块示例如下:

server {
    listen 80;
    server_name localhost;

    # 这个root必须和PHP-FPM容器内的代码目录完全一致
    root /var/www/code;
    index index.php index.html;

    # 处理静态文件和路由重写
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    # PHP请求处理规则
    location ~ \.php$ {
        # 这里填你Docker Compose里PHP-FPM服务的名称(比如php-fpm)
        fastcgi_pass php-fpm:9000;
        fastcgi_index index.php;
        # 核心:正确构造传给PHP-FPM的文件路径
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

2. 确保PHP-FPM容器的代码路径正确

你的PHP-FPM容器已经通过Git把代码拉到/var/www/code了,这部分没问题,但要确认Dockerfile里的拉取命令是正确的,比如:

RUN git clone https://your-repo-url.git /var/www/code
# 如果需要切换分支或者拉取特定版本,可以加额外命令
RUN cd /var/www/code && git checkout main

3. Docker Compose的注意点

确保Nginx服务能访问到PHP-FPM服务(默认同一网络下可以通过服务名访问),比如你的docker-compose.yml里大概是这样的:

version: '3'
services:
  web:
    image: nginx:alpine
    ports:
      - "8080:80"
    volumes:
      - ./site.conf:/etc/nginx/conf.d/default.conf
    networks:
      - app-network

  php-fpm:
    build: ./php-fpm
    networks:
      - app-network

networks:
  app-network:
    driver: bridge

小补充:为什么不需要Nginx容器里有代码?

很多人会疑惑:Nginx容器里没有/var/www/code目录,为什么root要设这个路径?其实Nginx只是用这个路径来构造传给PHP-FPM的文件路径,真正读取文件的是PHP-FPM容器,只要PHP-FPM容器里存在这个目录和对应的文件,就能正常执行。

内容的提问来源于stack exchange,提问作者syst0m

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:31:03