如何解决 require_once 中的致命错误
How to solve the fatal error in 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' 因为它再次要求并且配置路径无效
如何解决这个问题。
原因:
出现此问题是因为您的执行从 index.php
开始,然后您需要 service/service.php
。现在在 service.php
中,当您执行 ../config/config.php
时,PHP 尝试从 index.php
的角度解析目录路径,但它没有找到任何此类文件或目录。因此,错误。
解法:
在index.php
中声明一个常量。检查此常量是否存在于 service/service.php
中。如果没有,则要求它,否则像下面这样跳过它:
index.php:
<?php
define('INDEX_ENTRY_POINT',true);
require_once('config/config.php');
require_once('service/service.php');
?>
service.php:
<?php
if(!defined('INDEX_ENTRY_POINT')){
require_once('../config/config.php');
}
?>
注意:最好使用 __DIR__
给出绝对路径而不是相对路径来避免此类问题。
你必须考虑到当你从index.php调用service.php时,根是index.php的根。现在有很多方法可以解决这个问题。您可以决定 service.php 是主控制器,就像 index.php 一样,因此属于根文件夹。如果出于某种原因你想保持原样,那么你必须定义根以使其适应上面 vivek_23 答案中的情况。就个人而言,我会在根文件夹中保留 service.php,这样更合乎逻辑。
我的项目有两个入口点
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' 因为它再次要求并且配置路径无效
如何解决这个问题。
原因:
出现此问题是因为您的执行从 index.php
开始,然后您需要 service/service.php
。现在在 service.php
中,当您执行 ../config/config.php
时,PHP 尝试从 index.php
的角度解析目录路径,但它没有找到任何此类文件或目录。因此,错误。
解法:
在index.php
中声明一个常量。检查此常量是否存在于 service/service.php
中。如果没有,则要求它,否则像下面这样跳过它:
index.php:
<?php
define('INDEX_ENTRY_POINT',true);
require_once('config/config.php');
require_once('service/service.php');
?>
service.php:
<?php
if(!defined('INDEX_ENTRY_POINT')){
require_once('../config/config.php');
}
?>
注意:最好使用 __DIR__
给出绝对路径而不是相对路径来避免此类问题。
你必须考虑到当你从index.php调用service.php时,根是index.php的根。现在有很多方法可以解决这个问题。您可以决定 service.php 是主控制器,就像 index.php 一样,因此属于根文件夹。如果出于某种原因你想保持原样,那么你必须定义根以使其适应上面 vivek_23 答案中的情况。就个人而言,我会在根文件夹中保留 service.php,这样更合乎逻辑。