Ошибка при попытке использовать динамические ссылки require в php

#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, изменяется независимо от того, находитесь ли вы в дополнительном домене или в каталоге исходного веб-сайта, что делает недействительными все ссылки на файлы