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

NGINX PHP环境require()失效问题排查:文件名错误导致

解决NGINX+PHP环境下require()文件找不到的坑

最近在测试NGINX搭配PHP的环境时,踩了个哭笑不得的坑,记录一下整个排查过程:

问题现象

用require()函数引入文件时一直报找不到文件的错误,NGINX错误日志里的提示很明确:

FastCGI sent in stderr: "PHP message: PHP Warning: require(layout.php): failed to open stream: No such file or directory in /var/www/html/php/index.php on line 7"

我一开始确认layout.php和index.php在同一个目录/var/www/html/php下,所以第一反应是怀疑NGINX配置有问题,是不是PHP的工作目录不对,导致它只认index.php,找不到引入的其他文件。

相关代码与配置

测试用的PHP代码(index.php)

<?php 
echo "<title>Playground</title>"; 
echo "Hello World"; 
require('layout.php'); 
require ('footer.php');

NGINX中对应PHP测试站点的配置片段

location /php {
    root /var/www/html/;
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_param SCRIPT_FILENAME $request_filename;
        fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
    }
}

服务器文件结构

  • /var/www/html:同时存放Laravel项目和我的PHP测试代码
  • /var/www/wordpress:单独存放WordPress项目

最终排查结果

折腾了好一会儿,又是检查NGINX的root路径配置,又是验证PHP-FPM的文件权限,结果发现根本不是服务器配置的问题——我代码里写的layout.php根本不存在!实际放在目录里的是header.php,完全是自己手滑打错了文件名……

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 09:27:40