Я столкнулся с проблемой с 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 и следовал советам, как
Моя функция 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 /»), который был основной причиной. Следовательно, я разделил их на две части и теперь работает нормально.
Спасибо всем. Очень признателен.
Обновите функцию getDocumentRoot (), чтобы она возвращала абсолютный путь
function getDocumentRoot()
{
return dirname(__FILE__);
}
или использовать dirname(__FILE__)
в вашем требовании
Других решений пока нет …