Не удается найти файл после включения его в PHP - PullRequest
2 голосов
/ 18 ноября 2011

Поэтому я пытаюсь включить некоторые файлы в PHP, и это не работает.

Файл, который я пишу, находится в домашнем каталоге. В домашнем каталоге есть подкаталог "D1", а в D1 есть другой каталог, "D2".

Внутри D2 есть куча файлов. Я написал файл класса и сохранил его в D1. Это выглядит так:

<?php
include_once('D2/file1.php');
include_once('D2/file2.php');
//ect

class myClass {
   //class stuff
}
?>

Итак, я пишу файл в домашнем каталоге так:

<?php
include_once('D1/myclass.php');
?>

Но когда я загружаю этот файл, я получаю это:

Предупреждение: include_once (file1.php) [function.include-once]: не удалось открыть поток: нет такого файла или каталога в /home/D1/D2/file1.php в строке 2

"file1.php" определенно находится в этом каталоге, так что я делаю не так?

Ответы [ 3 ]

2 голосов
/ 18 ноября 2011

при включении файла относительное расположение относительно вызываемого скрипта, который является «текущим рабочим каталогом».поэтому, если скрипт A.php включает ./test/B.php и B.php хочет включить файл в ./test/, это будет относительно A.php.Вы можете создать абсолютный путь, используя __DIR__, который имеет путь и имя сценария, независимо от того, где он был включен, или используя $_SERVER['DOCUMENT_ROOT'], который будет указывать на корень документа.

Пример B.php:

<?php
include(__DIR__.'/C.php');
//will include C.php under the same directory as B.php
?>

другой вариант - добавить D1 к пути включений в php.ini.это говорит php искать файл в этом каталоге при выполнении include.

1 голос
/ 18 ноября 2011

Если вы работаете в операционной системе Linux или MAC, вам необходимо знать регистр для ваших файлов, прописные или строчные буквы D2? и т.д;

Также я заметил вашу строку class myClass {, означает ли это, что этот файл включен / используется другим файлом? В этом случае ваше относительное местоположение файла включения может измениться.

0 голосов
/ 18 ноября 2011

Я предполагаю, что у вас есть проблема с разрешениями. Убедитесь, что папки / файлы имеют правильные разрешения, разрешающие доступ через веб-службу.

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