PHP include, require_once, file_get_contents
Итак, если ваша PHP установка на сервере достаточно защищена и отключено URL file-access, а вы пытаетесь вызвать файл через функцию include с использованием абсолютного пути или обращаетесь к удаленному файл,у то столкнетесь с данной проблемой. Например код:
include ("http://www.somedomain.com/file.php");
?>
Приведет к тому, что вы увидите следующие ошибки PHP при просмотре страницы в браузере:
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(). Пропишите ее вместе с некоторой переменой в своем коде:
$a = file_get_contents("http://www.somedomain.com/file.php");
echo ($a);
?>
Если вы хотите включить файл, который уже находится на вашем сайте, используйте относительные пути, а не абсолютные:
include (file.php);
?>
Есть еще одно альтернативное решение, которое еще проще записать с помощью функции require_once без использования всяких сторонних переменных:
require_once($_SERVER['DOCUMENT_ROOT'].'file.php');
?>
Именно это решения я использовал для себя, причем удачно – скрипт заработал. В общем, программируйте правильно:) и ошибок не будет. Возможно, у вас есть что добавить ибо заметка достаточно старая, хотя PHP5 все еще актуально, насколько я понимаю.
- 2261 просмотр
Разделы
Комменты
-
Olzhas 10 месяцев 1 неделя назадСпасибо. С Новым Годом! →
-
Den 11 месяцев 3 дня назадВ первой функции, при создании переменной $li_previous нужно поменять '←' с NULL, в $li_next сделать тоже самое. →
-
Гость 11 месяцев 3 дня назадЕсли все ровно так как было описано, то нет никаких сомнений что домен увел сам регистратор. Потому что вероятность того →
-
Валерий 12 месяцев 2 дня назадда можно делать импорт-экспорт только лишь в оболочке на входя на mysql сервер →
-
admin 12 месяцев 2 дня назадВалерий, а зачем вам именно так делать экспорт? Если я не ошибаюсь, то там нет какой-либо команды чтобы сделать экспорт →
-
Валерий 12 месяцев 4 дня назадзахожу на mysql через ssh по команде →
-
admin 12 месяцев 4 дня назадДобрый вечер, какой у вас клиент? →
-
Валерий 1 год 14 часов назадЗдравстуйте, есть команда чтобы сделать экспорт базы внутри mysql клиента? →
-
Eduard 1 год 1 неделя назадВидать, домен хороший был. Заявление пробывали писать на мошенника? →
-
Stas 1 год 1 месяц назадОшибка в ключе квантификатора - replace(/будешь|пить/ig, "хлеб"); Указать -g для прохода по всем совпадениям! →
Комментарии (0)