TransWikia.com

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

Stack Overflow на русском Asked by wiaim on December 20, 2020

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

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();    

One Answer

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

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

include '../controllers/Controller.php'; 
//не находится т.к. controllers имеет не тот путь
class View
{
  public function test()
  {
      echo 'hello';
  }
}

$test = new View();
$test->test();

Answered by wiaim on December 20, 2020

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP