DataForce

Главная


Hosting


Dial-Up


О паролях


Browsers


E-Mail


Полезные ссылки

Работа с удаленными файлами в PHP
Есть несколько основных способов получения удалённого файла посредством PHP.
Наиболее простым и часто применяемым способом является использование функций include(), require(), fopen().
Например,
include("http://www.yahoo.com/index.html");
или
$fp=fopen("http://www.yahoo.com/index.html","r");
while ($tmp = fread($fp, 1024)) { $buffer .= $tmp; }

Однако, из-за ошибок это не всегда является наилучшим из возможных вариантов, вот почему:
$content = $_GET['content'];
[...]
$filename = $base . $content .".php";
include($filename);
В подобной конструкции отсутствует проверка содержимого $_GET['content'],
очень просто использовать это во вред хозяину виртуального сервера.
В любом случае, Вы должны обязательно проводить проверку "валидности" данных
передаваемых через глобальные переменные в Ваш скрипт.

Обратите внимание, что ф-ия fread() в предыдущем примере справедливо вызывалась внутри цикла,
это необходимо для того, чтобы получить полный объем данных. Вызов fread() не в цикле -- ещё одна
часто встречающаяся ошибка.

Альтернативой использованию этих функции является получение удалённых файлов посредством "сокетов",
рассмотрите этот вариант, возможно, он подойдёт Вам больше.

Если Вы всё же решили использовать одну из приведённых функций, проверили, что не допустили ошибок,
то следующим шагом для Вас станет включение allow_url_fopen.
Из соображений безопасности на наших хостинговых серверах по умолчанию allow_url_fopen = 0.
Вот пример характерных этому ошибки в лог-файлах:
PHP Warning: fopen(): URL file-access is disabled in the server configuration in ....
PHP Warning: fopen(....): failed to open stream: no suitable wrapper could be found in....

Для включения allow_url_fopen выполните следующие действия:
fairy!w_user:~$ pwd
/home/clients/w_user
server!w_user:~$ mkdir ~/.php
server!w_user:~$ echo "allow_url_fopen = 1" >> ~/.php/php.ini
server!w_user:~$ cat ~/.php/php.ini
allow_url_fopen = 1
server!w_user:~$

Если Ваши скрипты рассчитывают на allow_url_fopen = 1, это должно быть явным образом
определено в пользовательском конфигурационном файле php.ini
Если же у Вас нет необходимости включать allow_url_fopen, рекомендуем Вам явным образом
выключить allow_url_fopen.
Вы можете дополнять файл ~/.php/php.ini любыми другими необходимыми Вам директивами.
Подписка на технический список рассылки.
Появилась возможность подписаться на технический лист.
Адрес робота подписки df-tech-subscribe@maillist.df.ru
Для получения дополнительных инструкций следует просто отправить на указанный адрес пустое письмо.
Хостинг. Система напоминания пароля.
Обращаем Ваше внимание, что если Вы забыли пароль доступа к Вашему сайту Вы можете воспользоваться автоматической системой напоминания пароля.
Подробнее о том, как восстановить пароль...