Почему возникает ошибка “failed to open stream” , “<script_name>.php' for inclusion”? PHP

230
21 марта 2017, 14:44

Доброго времени суток
Прошу помочь:
При подключении файла относительно:

include '../controllers/Controller.php';

Возникли ошибки:

Warning: include(../controllers/Controller.php): failed to open stream: No such file or directory in /var/www/html/admin/views/View.php

Warning: include(): Failed opening '../controllers/Controller.php' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/html/admin/views/View.php

(php ищет файл в другой папке, почему то)

При подключении файла абсолютно:

include $_SERVER['DOCUMENT_ROOT'] . '/admin/controllers/Controller.php';

Все заработало, но так и не понял почему эти ошибки возникли. Все файлы названы правильно, пути прописаны правильно тоже. (OS Linux)
Вопрос:
Почему возникли ошибки?
Почему скрипт искал файл не в папке куда я его направляю, а в папке отткуда я его вызвал?

Код:
путь /html/admin/controllers

class Controller {}

путь /html/admin/views

include '../controllers/Contoller.php';
class View extends Controller
{
    public function test()
    {
        echo __DIR__;
    }
}

пусть html/admin/index.php

include 'views/View.php';
$test = new View();
$test->test();    
Answer 1

Ошибки были в том, что файл родительского класса я подключал в дочернем классе, а include работает по принципу copy/paste, и копирует вместе с самим классом include с путем, который уже не правильный для этого файла, поэтому когда подключил файл абсолютно, то проблема исчезла.

При подключении одного файла к другому получилось:
index.php

include '../controllers/Controller.php'; 
//не находится т.к. controllers имеет не тот путь
class View
{
  public function test()
  {
      echo 'hello';
  }
}
$test = new View();
$test->test();
READ ALSO
Вырезать текст от первого до последнего символа

Вырезать текст от первого до последнего символа

Есть ссылка: http://siteru/test/folder/photo/ph-1

249
Вывести переменную [дубликат]

Вывести переменную [дубликат]

На данный вопрос уже ответили:

274
Хранение ключа в программе

Хранение ключа в программе

Можно ли хранить ключ в открытом виде в виде переменной при выполнении программы? То есть, есть зашифрованные AES при помощи ключа юзера данныеПользователь...

273