Просмотр темы
Прикол с require_once
|
|
grungestranger |
Опубликовано 14.07.2013 16:54
|
Пользователь Сообщений: 83 Зарегистрирован: 25.02.2013 21:52 |
Привет всем. Такая конструкция: /index.php - /folder2/index2.php - /folder2/folder3/index3.php - Открываем /index.php - выводит Hello Как такое может быть, что, если в /folder2/index2.php - , то тоже работает? |
|
|
Rush |
Опубликовано 14.07.2013 17:31
|
Администратор Разработчики Группа поддержки Сообщений: 1418 Зарегистрирован: 31.08.2010 14:41 |
почитайте батенька про относительные пути
|
|
|
grungestranger |
Опубликовано 14.07.2013 18:08
|
Пользователь Сообщений: 83 Зарегистрирован: 25.02.2013 21:52 |
относительные пути - это отлично, но никакого ответа на вопрос - почему в такой конструкции в файле /folder2/index2.php также работает как и они не дадут. При чем если открыть файл /folder2/index2.php с кодом , то естественно будет ошибка. |
|
|
Polarfox |
Опубликовано 14.07.2013 18:37
|
Администратор Разработчики Группа поддержки Сообщений: 3387 Зарегистрирован: 20.08.2010 14:03 |
У тебя уровень меняется наверняка в папках. Уровень сделай как у нас - константой и все будет. Всегда делайте backup перед изменениями | Указывайте свою версию в подписи/профиле. | Вся бесплатная тех. поддержка только на форуме
|
|
|
grungestranger |
Опубликовано 14.07.2013 18:52
|
Пользователь Сообщений: 83 Зарегистрирован: 25.02.2013 21:52 |
Да у меня нет никаких переменных и констант, это просто пример без движка, без всего. Тут дело во вложенности require. Если идти с конца, то файл /folder2/folder3/index3.php require-ится в файл /folder2/index2.php (require_once "folder3/index3.php";), потом этот файл /folder2/index2.php require-ится в файл /index.php (require_once "folder2/index2.php";). Правильно? Или по-другому: В файл /index.php (require_once "folder2/index2.php";) require-ится файл /folder2/index2.php и потом уже срабатывает вот это - require_once "folder2/folder3/index3.php"; Но как может одновременно работать с разным кодом в файле /folder2/index2.php (и с require_once "folder3/index3.php"; и с require_once "folder2/folder3/index3.php";) ? |
|
|
Polarfox |
Опубликовано 14.07.2013 19:39
|
Администратор Разработчики Группа поддержки Сообщений: 3387 Зарегистрирован: 20.08.2010 14:03 |
омг много букв, одна картинка с ветками информативней была б.
Всегда делайте backup перед изменениями | Указывайте свою версию в подписи/профиле. | Вся бесплатная тех. поддержка только на форуме
|
|
|
grungestranger |
Опубликовано 14.07.2013 20:06
|
Пользователь Сообщений: 83 Зарегистрирован: 25.02.2013 21:52 |
Вот самое информативное - http://yadi.sk/d/WPMJWvOL6ozO6 . Сравните файлы /folder2/index2.php . |
|
|
Rush |
Опубликовано 14.07.2013 21:15
|
Администратор Разработчики Группа поддержки Сообщений: 1418 Зарегистрирован: 31.08.2010 14:41 |
Warning: require_once(folder2/folder3/index3.php) [function.require-once]: failed to open stream: No such file or directory in D:\webart\openserver\OpenServer\domains\localhost\123\2\folder2\index2.php on line 3 Fatal error: require_once() [function.require]: Failed opening required 'folder2/folder3/index3.php' (include_path='.;D:/webart/openserver/OpenServer/modules/php/PHP-5.3.19/;D:/webart/openserver/OpenServer/modules/php/PHP-5.3.19/PEAR' in D:\webart\openserver\OpenServer\domains\localhost\123\2\folder2\index2.php on line 3 и? |
|
|
grungestranger |
Опубликовано 14.07.2013 23:48
|
Пользователь Сообщений: 83 Зарегистрирован: 25.02.2013 21:52 |
Rush написал: Warning: require_once(folder2/folder3/index3.php) [function.require-once]: failed to open stream: No such file or directory in D:\webart\openserver\OpenServer\domains\localhost\123\2\folder2\index2.php on line 3 Fatal error: require_once() [function.require]: Failed opening required 'folder2/folder3/index3.php' (include_path='.;D:/webart/openserver/OpenServer/modules/php/PHP-5.3.19/;D:/webart/openserver/OpenServer/modules/php/PHP-5.3.19/PEAR' in D:\webart\openserver\OpenServer\domains\localhost\123\2\folder2\index2.php on line 3 и? Открывать надо не /folder2/index2.php ,а /index.php . |
|
|
Rush |
Опубликовано 15.07.2013 06:40
|
Администратор Разработчики Группа поддержки Сообщений: 1418 Зарегистрирован: 31.08.2010 14:41 |
ты меня в конец запутал
|
|
|
grungestranger |
Опубликовано 15.07.2013 06:55
|
Пользователь Сообщений: 83 Зарегистрирован: 25.02.2013 21:52 |
Я скинул 2 папки, отличия в них только в файлах /folder2/index2.php Но открывать в браузере нужно файлы /index.php В обоих случаях выведет Hello, и ошибки не будет. В этом и есть мой вопрос, как может работать в обоих случаях, хотя в файлах /folder2/index2.php прописаны разные пути. |
|
|
FILON |
Опубликовано 15.07.2013 09:03
|
Администратор Разработчики Группа поддержки Сообщений: 188 Зарегистрирован: 05.09.2012 12:13 |
grungestranger написал: В этом и есть мой вопрос, как может работать в обоих случаях, хотя в файлах /folder2/index2.php прописаны разные пути. Скорее всего зависит от версий PHP. 5-ая версия вычисляет путь от вызванного файла, поэтому "folder2/folder3/index3.php" считается приемлемым, а 4-ая версия – от подключаемого файла. Но лучше использовать константу уровня вложенности и вычислять путь относительно корня на примере BASEDIR в PHP-Fusion. Меньше проблем возникнет при организации иерархии. What's common between Halloween and Christmas? Every programmer knows: 31 oct = 25 dec.
|
|
|
grungestranger |
Опубликовано 15.07.2013 10:19
|
Пользователь Сообщений: 83 Зарегистрирован: 25.02.2013 21:52 |
FILON написал: grungestranger написал: В этом и есть мой вопрос, как может работать в обоих случаях, хотя в файлах /folder2/index2.php прописаны разные пути. Скорее всего зависит от версий PHP. 5-ая версия вычисляет путь от вызванного файла, поэтому "folder2/folder3/index3.php" считается приемлемым, а 4-ая версия – от подключаемого файла. Но лучше использовать константу уровня вложенности и вычислять путь относительно корня на примере BASEDIR в PHP-Fusion. Меньше проблем возникнет при организации иерархии. Но я проверяю все на одной версии php (5). Или в 5-й версии оставлена возможность поиска файла по пути от подключаемого файла? То есть, если он не находит файл по пути от вызванного файла, то он не выдает ошибку и ищет файл по пути от подключаемого файла? |
|
|
FILON |
Опубликовано 15.07.2013 10:44
|
Администратор Разработчики Группа поддержки Сообщений: 188 Зарегистрирован: 05.09.2012 12:13 |
grungestranger написал: Но я проверяю все на одной версии php (5). Или в 5-й версии оставлена возможность поиска файла по пути от подключаемого файла? То есть, если он не находит файл по пути от вызванного файла, то он не выдает ошибку и ищет файл по пути от подключаемого файла? На примерах получается именно так. Если бы при переходе на PHP 5 эту возможность не оставили, то у большинства проекты бы просто "посыпались". What's common between Halloween and Christmas? Every programmer knows: 31 oct = 25 dec.
|
|
|
grungestranger |
Опубликовано 15.07.2013 11:31
|
Пользователь Сообщений: 83 Зарегистрирован: 25.02.2013 21:52 |
FILON написал: grungestranger написал: Но я проверяю все на одной версии php (5). Или в 5-й версии оставлена возможность поиска файла по пути от подключаемого файла? То есть, если он не находит файл по пути от вызванного файла, то он не выдает ошибку и ищет файл по пути от подключаемого файла? На примерах получается именно так. Если бы при переходе на PHP 5 эту возможность не оставили, то у большинства проекты бы просто "посыпались". Все прояснилось, спасибо)) |
|
|
Polarfox |
Опубликовано 15.07.2013 13:18
|
Администратор Разработчики Группа поддержки Сообщений: 3387 Зарегистрирован: 20.08.2010 14:03 |
Всегда делайте backup перед изменениями | Указывайте свою версию в подписи/профиле. | Вся бесплатная тех. поддержка только на форуме
|
|
Поделиться этой темой | |
Социальные закладки: | |
URL: | |
BBcode: | |
HTML: |
Перейти на форум: |