#php #dynamic #hyperlink #require
#php #динамичный #гиперссылка #требовать #динамический
Вопрос:
Я пытаюсь использовать код, require $_SERVER['DOCUMENT_ROOT'].'/resources/mysql.php';
чтобы включить файл /resources/mysql.php
(относительно root).
На моем компьютере это работает, и проблем нет, однако пользователи моего сайта жаловались, что КАЖДАЯ страница, кроме корневой (/index.php ) не удается загрузить с ошибкой
Fatal error: require() [function.require]: Failed opening required '/home/website/public_html/resources/mysql.php' (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/website/public_html/website/events/index.php on line 2
Почему это не удается только на некоторых компьютерах. Я попытался воспроизвести проблему на своем компьютере, и даже после очистки моего браузера и кэша DNS я не могу вызвать эту ошибку. Что я делаю не так и есть ли лучший способ динамически включать файлы php?
Комментарии:
1. Почему вы не можете просто определить свой URL примерно так: define(‘BASE_URL’, ‘ yoursite.com /’ ); в вашем файле конфигурации, а затем используйте BASE_URL.’/resources/mysql.php /’ ?
Ответ №1:
Это выглядит странно, что вы можете получить доступ к веб-сайту, а некоторые люди — нет.
Вы могли бы использовать (если вы используете php> 5.3):
__DIR__
Вы также могли бы использовать:
dirname(__FILE__);
Имейте в виду, что DOCUMENT_ROOT недоступен (я думаю), когда вы запускаете свой скрипт через CLI
Комментарии:
1. По-видимому, я не смогу опубликовать свой собственный ответ еще 8 часов, поэтому я опубликую его здесь:
2. Мой веб-сайт настроен как дополнительный домен другого веб-сайта. Пользователи, получающие ошибку, использовали исходный каталог веб-сайта вместо дополнительного домена. То, что PHP воспринимает как root, изменяется независимо от того, находитесь ли вы в дополнительном домене или в каталоге исходного веб-сайта, что делает недействительными все ссылки на файлы