0

我的项目有两个入口点

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' 因为它再次需要并且配置路径无效

如何解决这个问题。

4

2 回答 2

0

原因:

出现此问题是因为您的执行从开始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__绝对路径而不是相对路径来避免此类问题。

于 2020-08-02T07:03:30.653 回答
0

您必须考虑,当您从 index.php 调用 service.php 时,根是 index.php 的根。现在有很多方法可以解决这个问题。您可以决定 service.php 是主控制器,就像 index.php 一样,因此属于根文件夹。如果出于某种原因您想保持原样,那么您必须定义根以使其适应上面的 vivek_23 答案中的情况。就个人而言,我会将 service.php 保留在根文件夹中,这更符合逻辑。

于 2020-08-02T09:40:45.777 回答