PHP include, require_once, file_get_contents
Итак, если ваша PHP установка на сервере достаточно защищена и отключено URL file-access, а вы пытаетесь вызвать файл через функцию include с использованием абсолютного пути или обращаетесь к удаленному файл,у то столкнетесь с данной проблемой. Например код:
include ("http://www.somedomain.com/file.php");
?>
Приведет к тому, что вы увидите следующие ошибки PHP при просмотре страницы в браузере:
Warning: include() [function.include]: URL file-access is disabled in the server configuration in /home/user/public_html/page.php on line xx
Warning: include(http://www.somedomain.com/file.php) [function.include]: failed to open stream: no suitable wrapper could be found in /home/user/public_html/page.php on line xx
Warning: include() [function.include]: Failed opening ‘http://www.somedomain.com/file.php’ for inclusion (include_path=’.:/usr/lib/php:/usr/local/lib/php’) in /home/user/public_html/page.php on line xx
В PHP 5 функция include для удаленных файлов отключена по умолчанию, и, если ваш сервер использует другую версию PHP, но имеет безопасную установку, вы также столкнетесь с этой ошибкой.
Причина отключения PHP функции include для файлов достаточно простая – это позволит избежать межсайтовых скриптовых (XSS) атак. Это метод, с помощью которого кто-то из недоброжелателей может внедрить свой собственный вредоносный код в ваш, что, как правило, делается для проведения DoS и DDoS атак, а они в свою очередь приводят к падению сервака. Еще есть включения (заражения) в коде страницы, которые содержат и выводят на экран компьютера сообщения мол “такие-то хакеры сломали ваш сайт” вместо стандартного содержимого страницы.
Поэтому если вы собираетесь попросить хостера разрешить эту функцию для удаленных файлов, хорошенько подумайте еще разок.
С другой стороны эта ошибка может быть преодолена с помощью некоторых лучших решений в вашем коде для вызова удаленных файлов. Если вы хотите включить удаленный файл, я бы рекомендовал использовать вам функцию file_get_contents(). Пропишите ее вместе с некоторой переменой в своем коде:
Если вы хотите включить файл, который уже находится на вашем сайте, используйте относительные пути, а не абсолютные:
Есть еще одно альтернативное решение, которое еще проще записать с помощью функции require_once без использования всяких сторонних переменных:
require_once($_SERVER['DOCUMENT_ROOT'].'file.php');
?>
Именно это решения я использовал для себя, причем удачно – скрипт заработал. В общем, программируйте правильно:) и ошибок не будет. Возможно, у вас есть что добавить ибо заметка достаточно старая, хотя PHP5 все еще актуально, насколько я понимаю.
- Categories:
- heihachi's blog
- Add new comment
- 989 reads

Recent comments
5 hours 31 min ago
8 hours 23 min ago
1 day 10 hours ago
1 day 17 hours ago
4 days 2 hours ago
4 days 2 hours ago
2 weeks 1 day ago
3 weeks 7 hours ago
4 weeks 2 days ago
7 weeks 5 days ago