Преодоление ошибки Warning: include() [function.include] в PHP
Thursday, 21 May 09 в 3:14
Пока пишу объемную статью, небольшое полезное сообщение для разработчиков. Разбирался как-то с ошибкой PHP при попытке установить один скрипт и случайно попал на англоязычный блог, где очень подробно, доходчиво было рассказано о проблеме. Точнее это даже не ошибка, а предупреждение, но скрипт все равно не срабатывал.
Итак, если ваша 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(). Пропишите ее вместе с некоторой переменой в своем коде:
<? $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 все еще актуально, насколько я понимаю.
P.S. Открылась новая система ссылок, где можно прикупить ссылок для своих англоязычных проектов.
Чистая обувь – лицо компании. Машинки для чистки обуви в Москве, можно и в аренду.
Все салоны красоты Украины – специально для женщин.
Для них также женский журнал – интересно и актуально.

Технология RSS – штука очень полезная и интересная. Помнится как-то давным-давно я вычитал информацию, что Google ну очень любит сайты, где контент не просто статический, а более-менее как-то обновляется. То ли это влияло на скорость и частоту индексации, то ли еще на что-то. Не знаю, правда, насколько эта информация актуальная сейчас, но в любом случае RSS могут здорово разбавить сайт. Да, там есть ссылки, на источник новостей, но это своего рода благодарность за постоянно обновляемые новости. Сейчас полно всяких систем, которые обмениваются трафиком подобным образом – устанавливаются своеобразные информеры. В сети даже можно найти сайты, контент, которых в большей степени состоит из подобных блоков, которые берутся со сторонних источников. Я лично, не сторонник такой идеи, хотя, возможно, она может дать интересные результаты.
Данный скрипт совершенно другого уровня – тут и требования к хостингу имеются, и документация, и даже свои хаки. В общем, мощная и комплексная разработка. Забегая наперед скажу, что со своей задачей импорта RSS он справился на все 100. Также хотелось поблагодарить автора
Недавно состоялся релиз новой версии достаточно интересной бесплатной flash галереи dfGallery, которую уже успели опробовать более 200тысяч человек. Отличительно особенностью галереи есть не только ее внешний вид, а и архитектура. Так, например, она поддерживает возможность настройки внешнего вида через «темы» и «стили». Система управления галереи построена с помощью фреймворка CodeIginter, позволяет управлять множеством галерей и альбомов разных типов.




