Проблема с PHP включают с глобальным путем

Я столкнулся с проблемой с PHP включает. Основываясь на чтениях из Интернета, я использовал относительный путь, чтобы иметь гибкость вокруг.

Пока я ссылаюсь на путь непосредственно в каждом файле, как

require_once '../includes/connection.php';  // it works fine.

Проблема начинается, когда я ссылаюсь на этот путь с глобальной константой

require_once getDocumentRoot() . '/includes/connection.php',

как говорится ниже ошибка.

Warning: require_once(/phpPractices/myApp/includes/connection.php): failed to open stream: No such file or directory in /Applications/XAMPP/xamppfiles/htdocs/phpPractices/myApp/dir1/list.php on line 19".

Я читал так много тем в SO и следовал советам, как

  1. Определите константу как DOCUMENT_ROOT с базовым директором файла. (Как тот, что говорится здесь, в SO -> https://stackoverflow.com/a/22912261/1001242)
  2. Также пытались с различными вариантами, такими как DIR, имя_базовой_папки (ФАЙЛ) так далее.,
  3. Добавил мой каталог приложения (/ phpPractices / myApp) в include_path с помощью метода set_include_path () (как упоминалось в PHP, Как установить путь включения а также http://php.net/manual/en/function.set-include-path.php)

Моя функция getDocumentRoot () определяется следующим образом.

function getDocumentRoot()
{
$loc_pos_2 = strpos($_SERVER['REQUEST_URI'], "/", 1);
$baseDir = substr($_SERVER['REQUEST_URI'], 0, $loc_pos_2);
$baseDir = $baseDir . "/myApp";
return $baseDir;
}

Замечания: Я мог видеть, что файл существует физически. Однако метод file_exists () возвращает false, чего я не понимаю, почему. Возможно, это могло быть причиной беспокойства?

К вашему сведению, моя структура каталогов, как показано ниже.

htdocs
phpPractices
myApp --> Web App Root
includes
connection.php
inc
header.php
footer.php
global.php -- contains getDocumentRoot() method and included in header.php
index.php
dir1 --> my module specific dir
list.php --> which needs 'connection.php'

Мой list.php содержит ниже

<?php

include_once '../inc/header.php'; // it works fine as I do relative to the path

//require_once '../includes/connection.php'; //works fine
require_once getDocumentRoot() . '/includes/connection.php'; // FAILS! :(

?>

Но ничего не помогает! Любое предложение, чтобы избавиться от этой проблемы, будет высоко ценится.

Заранее спасибо!

РЕШЕНИЕ

Спасибо всем, кто ответил. Я получил новый обходной путь, который мне как-то помогает 🙂

1. For all the menu items with links:

I use my getDocumentRoot() method which provides me -
'/phpPractices/myApp/' --> which is relative to my Web App.

2. For all the include, require functions :

I defined a different constant as below & as per this link:
https://stackoverflow.com/a/1488293/1001242

define('APP_BASE_PATH', $_SERVER['DOCUMENT_ROOT'] . '/myApp');

which returns me the complete absolute path which works fine for file inclusion.

Я вмешивался в это оба. При включении файла вывод getDocumentRoot () из «/ phpPractices / myApp» не удался, так как он пытался найти каталог с именем «phpPractices» в корне («/ phpPractices /»), который был основной причиной. Следовательно, я разделил их на две части и теперь работает нормально.

Спасибо всем. Очень признателен.

1

Решение

Обновите функцию getDocumentRoot (), чтобы она возвращала абсолютный путь

function getDocumentRoot()
{
return dirname(__FILE__);
}

или использовать dirname(__FILE__) в вашем требовании

1

Другие решения

Других решений пока нет …