Обновить:
Файл index.php:
/public_html/d/index.php
включает:
/public_html/d/core/source/class.File1.php
Этот класс.File1.php здесь включает в себя следующее:
include 'class.File2.php';
Естественно, я помещал class.File2.php
в тот же каталог, что и class.File1.php, как указано выше.
/public_html/d/core/source/class.File2.php
Однако,
Он фактически включает этот файл: (обратите внимание на отсутствующий /d/
)
/public_html/core/source/class.File2.php
Не уверен, почему он не использует файл, находящийся в текущем каталоге.
Но вот некоторые возможности.
Вход от пользователя, запрашивающего страницу, поступает в: (типы пользователей www.host.com/d
)
/public_html/d/
Это включает в себя: (который отлично работает, я его протестировал)
/public_html/d/core/source/class.File1.php
Однако включить в этот файл, где вещи сломаются, как указано выше:
include "class.File2.php"
Единственное, что имеет смысл … заключается в том, что включает в себя какую-то внутреннюю константу, такую как
ROOT
или
$_SERVER['DOCUMENT_ROOT']
но я до сих пор не могу понять, почему он проигнорировал /d/
но выяснил остальное.
Вы используете set_include_path в любом месте своего приложения? Возможно, это может быть причиной вашей проблемы. Поступая таким образом, вы указываете список каталогов, в которых функции require, include, fopen (), file (), readfile () и file_get_contents () сначала ищут файлы.
В качестве альтернативы я предлагаю вам определить абсолютный путь, чтобы избежать проблем. Напишите это на вашем /public_html/d/core/source/class.File1.php
// This if you are using PHP >= 5.3 include(__DIR__ . '/class.File2.php'); // Or this if you dont have the magic constant __DIR__ available include(dirname(__FILE__) . '/class.File2.php');
__FILE__
и __FILE__
– магические константы. __FILE__
– это константа, которая имеет абсурдный путь к этому конкретному файлу. И __DIR__ – это абсурдный путь к каталогу, в котором находится этот файл. Вы можете даже проверить их, выполнив echo __FILE__;
или echo __DIR__;
Подробнее о них вы можете узнать здесь http://php.net/manual/en/language.constants.predefined.php
Вы пробовали включить относительный путь?
include './class.File2.php';
Является ли класс.File1.php сам по себе частью другого скрипта?
getcwd()
всегда возвращает тот же путь независимо от того, в каком файле он находится (в моей системе). Ошибка, на мой взгляд.
(В моей системе) PHP нашел другой файл в пути, не указанном в списке include или в текущем каталоге. На мой взгляд, это ошибка.
В моей системе, если вы не хотите использовать абсолютные пути … единственный способ, которым я нашел относительные пути, – dirname(__FILE__);
чтобы добавить, куда вы хотите отправиться.
, или ./ добавление файла не сработало.