为了账号安全,请及时绑定邮箱和手机立即绑定

如何解决require_once中的致命错误

如何解决require_once中的致命错误

PHP
一只甜甜圈 2023-09-15 09:42:44
我的项目有两个入口点project (root-folder)/config(folder)    config.php/service(folder)    service.phpindex.php例如文件 1:/index.php(第一个入口点) - 这里我们包含 config 文件夹中的配置<?phprequire_once('config/config.php');require_once('service/service.php');?>文件 2:service/service.php - 这里我们包含配置文件夹中的配置<?phprequire_once('../config/config.php');?>如果我调用文件 2:service/service.php 没有致命错误但是当我调用 File 1:/index.php 时,它变成了致命错误,因为无法要求“service/service.php”,因为它再次要求并且配置路径无效如何解决这个问题。
查看完整描述

2 回答

?
慕慕森

TA贡献1856条经验 获得超17个赞

原因:


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


查看完整回答
反对 回复 2023-09-15
?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

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



查看完整回答
反对 回复 2023-09-15
  • 2 回答
  • 0 关注
  • 156 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信