Как исправить фатальную ошибку в require_once - PullRequest
0 голосов
/ 02 августа 2020

Мой проект имеет две точки входа

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 - здесь мы включаем конфигурацию из папки config

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

?>

, если я вызываю файл 2: service / service. php не имеет фатальной ошибки

, но когда я вызываю файл 1: /index.php, он становится фатальной ошибкой, поскольку не требует 'service / service. php', потому что он требует еще раз и конфигурации путь неверен

Как решить эту проблему.

Ответы [ 2 ]

0 голосов
/ 02 августа 2020

Вы должны учитывать, что когда вы вызываете service. php из index. php, root соответствует index. php. Теперь есть много способов обойти это. Вы можете решить, что service. php является главным контроллером, как и index. php, и, следовательно, принадлежит папке root. Если по какой-то причине вы хотите сохранить его как есть, вам необходимо определить root, чтобы он адаптировался к ситуации, как в ответе vivek_23 чуть выше. Лично я бы сохранил сервис. php в папке root, больше логи c.

0 голосов
/ 02 августа 2020

Причина:

Эта проблема возникает из-за того, что ваше выполнение начинается с 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__, задавая абсолютные пути, чем относительные пути, чтобы избежать таких проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...