首页 > 解决方案 > 如何解决require_once中的致命错误

问题描述

我的项目有两个入口点

project (root-folder)
/config(folder)
    config.php
/service(folder)
    service.php
index.php

例如

文件 1:/index.php(第一个入口点) - 这里我们包含配置文件夹中的配置

<?php
require_once('config/config.php');
require_once('service/service.php');
?>

文件 2:service/service.php - 这里我们包含配置文件夹中的配置

<?php
require_once('../config/config.php');

?>

如果我调用文件 2:service/service.php 没有致命错误

但是当我调用文件 1:/index.php 时,它变成了致命错误,因为它无法要求 'service/service.php' 因为它再次需要并且配置路径无效

如何解决这个问题。

标签: phpfileincluderequire-onceinclude-once

解决方案


原因:

出现此问题是因为您的执行从开始index.php,然后您需要service/service.php. 现在,service.php当您这样做时../config/config.php,PHP 会尝试从index.php角度解析目录路径,但它没有找到任何这样的文件或目录。因此,错误。

解决方案:

在 中声明一个常数index.php。检查此常量是否存在于service/service.php. 如果没有,则需要它,否则像下面这样跳过它:

索引.php:

<?php
   define('INDEX_ENTRY_POINT',true);
   require_once('config/config.php');
   require_once('service/service.php');
?>

服务.php:

<?php
   if(!defined('INDEX_ENTRY_POINT')){
     require_once('../config/config.php');
   }
?>

注意:最好使用__DIR__绝对路径而不是相对路径来避免此类问题。


推荐阅读