如何解决require_once中的致命错误

我的项目有两个入口点


project (root-folder)

/config(folder)

    config.php

/service(folder)

    service.php

index.php

例如


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


<?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 没有致命错误


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


如何解决这个问题。


一只甜甜圈
浏览 98回答 2
2回答

慕慕森

原因:出现此问题是因为您的执行从 开始index.php,然后您需要service/service.php。现在,service.php当您这样做时../config/config.php,PHP 尝试从index.php角度解析目录路径,但它找不到任何此类文件或目录。因此,出现错误。解决方案:在 中声明一个常量index.php。检查该常量是否存在于service/service.php. 如果没有,则需要它,否则跳过它,如下所示:索引.php:<?php&nbsp; &nbsp;define('INDEX_ENTRY_POINT',true);&nbsp; &nbsp;require_once('config/config.php');&nbsp; &nbsp;require_once('service/service.php');?>服务.php:<?php&nbsp; &nbsp;if(!defined('INDEX_ENTRY_POINT')){&nbsp; &nbsp; &nbsp;require_once('../config/config.php');&nbsp; &nbsp;}?>注意:最好使用__DIR__绝对路径而不是相对路径来避免此类问题。

料青山看我应如是

您必须考虑到,当您从index.php调用service.php时,根目录是index.php的根目录。现在有很多方法可以解决这个问题。您可以确定 service.php 是主控制器,就像 index.php 一样,因此属于根文件夹。就我个人而言,我会将 service.php 保留在根文件夹中,这样更符合逻辑。
打开App,查看更多内容
随时随地看视频慕课网APP