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();
Ошибки были в том, что файл родительского класса я подключал в дочернем классе, а 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
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP