Передача переменных через require_once (PHP)
есть файлы:
/forum/global.php
/forum/chat/rooms.php
Нужно сделать так что бы переменные rooms.php были доступны в global.php
И соответственно прописываем в global.php:
Код:
require_once 'chat/rooms.php';
Вываливается ошибка:
Warnung: main(lang/languages.inc): failed to open stream: No such file or directory in /chat/incl/main.inc (Cell 16)
рассмотр ошибки показал что:
main.inc прописан в rooms.php как
Код:
require_once 'incl/main.inc';
А languages.inc прописан в main.inc таким же образом
Насколько я понимаю тут какая то цепочка, которая начинает ломаться при добавления rooms.php в global.php.
Как это можно исправить ?
Цитата:
Как это можно исправить ?
указывать полный путь. Ещё лучше, основные пути обозначить в константах:
Код:
define("PHORUM_PATH", "/home/inc/forum");
// Подключать файлы, используя константы
require_once(PHORUM_PATH ."/chat/rooms.php");
require_once(PHORUM_PATH ."/chat/incl/main.inc");
// Подключать файлы, используя константы
require_once(PHORUM_PATH ."/chat/rooms.php");
require_once(PHORUM_PATH ."/chat/incl/main.inc");
Также можно внести супер-пупер важные пути в переменную PATH.
Если я правильно помню, относительный путь к файлу считается относительно текущей рабочей директории, которой является директория того php файла, к которому обратились. Если мы инклудим файл, где нужен относительный путь, то этот путь будет считаться все-равно от первого вызываемого файла. Это связано с тем, что "инклуды" и "реквайры" действуют по принципу вставки содержимого библиотеки на место объявления соответственно инклуда и реквайра. А значит рабочая директория сохраняется.
Цитата: mfender
указывать полный путь. Ещё лучше, основные пути обозначить в константах:
Также можно внести супер-пупер важные пути в переменную PATH.
Код:
define("PHORUM_PATH", "/home/inc/forum");
// Подключать файлы, используя константы
require_once(PHORUM_PATH ."/chat/rooms.php");
require_once(PHORUM_PATH ."/chat/incl/main.inc");
// Подключать файлы, используя константы
require_once(PHORUM_PATH ."/chat/rooms.php");
require_once(PHORUM_PATH ."/chat/incl/main.inc");
Также можно внести супер-пупер важные пути в переменную PATH.
К сожалению не помогло. Та же самая ошибка
Приведи хоть свое дерево директорий сайта и цепочки инклудов до первого вложения.
Если не помогло, то проблема в том, что путь указан неверно. Как крайний случай - неправильно настроенные права доступа.
global.php->rooms.php->main.inc->languages.inc
Директории:
var/www/html/forum/global.php
var/www/html/forum/chat/rooms.php
var/www/html/forum/chat/incl/main.inc
var/www/html/forum/chat/lang/languages.inc
Цитата: Dolonet
Как крайний случай - неправильно настроенные права доступа.
проверил....везде стоят хмоды 755
то languages.inc надо подключать как chat/lang/languages.inc
ЗЫ: вообще я както для этих целей юзал стек каталогов....
А слеш перед первой директорией ставишь?
Проблема решается заданием абсолютных каталогов? Если нет, то пробуйте отдебагить проблему через
Цитата: Dolonet
А слеш перед первой директорией ставишь?
да
Цитата: Dolonet
Проблема решается заданием абсолютных каталогов?
тоже пробовал
Цитата: Dolonet
Если нет, то пробуйте отдебагить проблему через http://ru2.php.net/manual/ru/function.file-exists.php или http://ru2.php.net/manual/ru/function.opendir.php
спасибо, гляну....