PHP функции типа require() не понимают констант

T
На сайте с 24.07.2008
Offline
145
1434

Добрый день, в процессе работы скрипта необходимо подключить код через require(); причем путь к подключаемому файлу написан через заданную ранее константу require(PATH_TO_FILE.'/file.php');

Обнаружилась ошибка, скрипт не видит подключаемого файла. failed to open stream: No such file or directory

Файл физически есть. Константа задана верно (вывожу ее перед require через echo, выводит всё правильно). В то же время если задать путь в ручную - всё заработает, даже если путь хранить не в константе, а в обычной переменной require($path_to_file.'/file.php'); всё заработает.

Видимо какие-то настройки php не позволяют функциям типа require, is_file, is_dir, file_exists работать с константами. Надеюсь на вашу помощь.

Версия пхп 5.3

Апокалипсис
На сайте с 02.11.2008
Offline
391
#1

А так:


require(PATH_TO_FILE."/file.php");
Записки нищего (http://zapiskinishego.ru) - мой личный блог Услуги php программиста. Очень нужна любая работа. Не покупают? Поведенческий аудит интернет-магазина за 5000 руб. (/ru/forum/990312)
T
На сайте с 24.07.2008
Offline
145
#2
Апокалипсис:
А так:

require(PATH_TO_FILE."/file.php");

смена ковычек не привела к решению проблемы ((

---------- Добавлено 20.11.2013 в 13:00 ----------

Дополню, что проблема выявилась при смене хостинга, поэтому и грешу на настройки сервера. Но что и где надо изменить я не знаю, гугл не помогает, поиск по форуму тоже, техподдержка молчит.

TakingBackMySoul
На сайте с 09.11.2011
Offline
65
#3

уберите скобки.

и вообще, используйте include

T
На сайте с 24.07.2008
Offline
145
#4
TakingBackMySoul:
уберите скобки.
и вообще, используйте include

Какие скобки убрать? Приведите, пожалуйста, кусок кода как вы это видите.

Замена require на include ни к чему не привела, иклуд возвращает варнинги о том что файлы не подцепились по причине их отсутствия.

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#5

Полные коды приведите. Нам не важны ваши пересказы ответа компилятора.

Полностью все ошибки и что вы вводите в переменные.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
TakingBackMySoul
На сайте с 09.11.2011
Offline
65
#6

Я про круглые скобки. А вы используете относительные пути, или полные с http:// ?

Если полные, то попробуйте использовать относительный, многие хостеры блочат allow_url_include в целях безопасности.

Хотя непонятно тогда почему переменная работает... интересно, интересно...

TitanIKS
На сайте с 25.01.2013
Offline
46
#7
TakingBackMySoul:
уберите скобки.
и вообще, используйте include

Улыбнуло 😂

Если вы используете short tags - <? вместо <?php , то такое тоже может быть.

T
На сайте с 24.07.2008
Offline
145
#8


session_start();
@ini_set('url_rewriter.tags', 'area=href,frame=src,form=,fieldset=');

define('WINDOWS', (substr(PHP_OS, 0, 3) == 'WIN'));
$this_path = dirname(__FILE__);

// Подключение конфигурационных файлов (это работает) В этом файле объявляется константа CONFIG_PATH_CMS
require($this_path.'/config.php');

// Загрузка конфигурационного файла билдера (это не работает)
require_once(CONFIG_PATH_CMS.'/builder/config.php');

Далее идет фатал эррор:


Warning: require_once( /path/public_html/cms/builder/config.php) [function.require-once]: failed to open stream: No such file or directory in /path/public_html/cms/autoexec.php on line 13

Fatal error: require_once() [function.require]: Failed opening required ' /path/public_html/cms/builder/config.php' (include_path='.:/usr/share/php:/usr/share/pear') in /path/public_html/_cms/autoexec.php on line 13


---------- Добавлено 20.11.2013 в 13:19 ----------

TitanIKS:
Улыбнуло 😂

Если вы используете short tags - <? вместо <?php , то такое тоже может быть.

использую <?php

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#9

Да ёмаё. Какие вы сложные.

// Подключение конфигурационных файлов (это работает) В этом файле объявляется константа CONFIG_PATH_CMS
require($this_path.'/config.php');

Ну и как это объявляется в файле /config.php?

T
На сайте с 24.07.2008
Offline
145
#10

Балина )) проблема решена, когда правил пути при переезде закрался лишний пробел в начале объявления константы.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий