mirror of
https://github.com/php/doc-ru.git
synced 2026-03-23 23:32:16 +01:00
119 lines
5.2 KiB
XML
119 lines
5.2 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
||
<!-- EN-Revision: a0ae28d3bc85f927c22649ebd9a590b921534b7d Maintainer: shein Status: ready -->
|
||
<!-- Reviewed: no -->
|
||
<chapter xml:id="features.remote-files" xmlns="http://docbook.org/ns/docbook">
|
||
<title>Работа с удалёнными файлами</title>
|
||
|
||
<para>
|
||
В случае, если опция <option>allow_url_fopen</option> включена
|
||
в конфигурационном файле &php.ini;, вы можете использовать
|
||
URL-адреса <acronym>HTTP</acronym> и <acronym>FTP</acronym>
|
||
в большинстве функций, принимающих в качестве
|
||
параметра имя файла. Также вы можете использовать ссылки в операторах
|
||
<function>include</function>,
|
||
<function>include_once</function>,
|
||
<function>require</function> и
|
||
<function>require_once</function>
|
||
(для корректной работы этих функций
|
||
должна быть включена опция <option>allow_url_include</option>).
|
||
Дополнительную информацию о поддерживаемых в PHP протоколах вы можете
|
||
найти в <xref linkend="wrappers"/>.
|
||
</para>
|
||
<para>
|
||
Например, вы можете использовать это для того, чтобы открыть файл на
|
||
удалённом сервере, извлечь необходимые вам данные и использовать их
|
||
в запросе к базе данных или же просто отобразить их в дизайне вашего сайта.
|
||
</para>
|
||
<para>
|
||
<example>
|
||
<title>Получение заголовка удалённой страницы</title>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?php
|
||
$file = fopen ("http://www.example.com/", "r");
|
||
if (!$file) {
|
||
echo "<p>Невозможно открыть удалённый файл.\n";
|
||
exit;
|
||
}
|
||
while (!feof ($file)) {
|
||
$line = fgets ($file, 1024);
|
||
/* Сработает, только если заголовок и сопутствующие теги расположены в одной строке */
|
||
if (preg_match ("@\<title\>(.*)\</title\>@i", $line, $out)) {
|
||
$title = $out[1];
|
||
break;
|
||
}
|
||
}
|
||
fclose($file);
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
</example>
|
||
</para>
|
||
<para>
|
||
Вы также можете работать с удалёнными файлами, расположенными на FTP-сервере
|
||
(подразумевается, что вы авторизовались с необходимыми для этого
|
||
привилегиями). Таким образом вы можете только создавать новые файлы, но
|
||
попытка перезаписать существующий файл при помощи функции <function>fopen</function>
|
||
приведёт к ошибке.
|
||
</para>
|
||
<para>
|
||
Для того, чтобы авторизоваться под пользователем, отличным от 'anonymous',
|
||
вам необходимо указать логин (и, возможно, пароль) в адресной строке, например
|
||
так: '<literal>ftp://user:password@ftp.example.com/path/to/file</literal>'. (Вы можете
|
||
использовать этот же синтаксис для доступа к удалённым файлам по <acronym>HTTP</acronym>-протоколу,
|
||
если необходима Basic-аутентификация.)
|
||
</para>
|
||
<para>
|
||
<example>
|
||
<title>Сохранение данных на удалённом сервере</title>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?php
|
||
$file = fopen ("ftp://ftp.example.com/incoming/outputfile", "w");
|
||
if (!$file) {
|
||
echo "<p>Невозможно перезаписать удалённый файл.\n";
|
||
exit;
|
||
}
|
||
/* Запись данных. */
|
||
fwrite ($file, $_SERVER['HTTP_USER_AGENT'] . "\n");
|
||
fclose ($file);
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
</example>
|
||
</para>
|
||
<para>
|
||
<note>
|
||
<para>
|
||
Глядя на приведённый выше пример, у вас может возникнуть идея
|
||
использовать эту технику для ведения удалённого лог-файла. К сожалению,
|
||
это нереализуемо, поскольку попытка записи в уже существующий
|
||
удалённый файл при помощи функции <function>fopen</function>
|
||
приведёт к ошибке. В реализации распределённого логирования,
|
||
возможно, вам поможет функция <function>syslog</function>.
|
||
</para>
|
||
</note>
|
||
</para>
|
||
|
||
</chapter>
|
||
<!-- Keep this comment at the end of the file
|
||
Local variables:
|
||
mode: sgml
|
||
sgml-omittag:t
|
||
sgml-shorttag:t
|
||
sgml-minimize-attributes:nil
|
||
sgml-always-quote-attributes:t
|
||
sgml-indent-step:1
|
||
sgml-indent-data:t
|
||
indent-tabs-mode:nil
|
||
sgml-parent-document:nil
|
||
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
|
||
sgml-exposed-tags:nil
|
||
sgml-local-catalogs:nil
|
||
sgml-local-ecat-files:nil
|
||
End:
|
||
vim600: syn=xml fen fdm=syntax fdl=2 si
|
||
vim: et tw=78 syn=sgml
|
||
vi: ts=1 sw=1
|
||
-->
|