1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
|
<?xml version="1.0" encoding="iso-8859-1"?>
<chapter id="features.remote-files">
<title>Zugriff auf entfernte Dateien</title>
<para>
Wenn die Untersttzung fr den "URL fopen wrapper" bei der
Konfiguration von PHP vorhanden ist (welche standardmig eingestellt ist, es sei denn,
die Option <option>--disable-url-fopen-wrapper</option> wurde bei der Installation verwendet (Versionen
bis 4.0.3) oder der Parameter <parameter>allow_url_fopen</parameter> in der php.ini
deaktiviert wurde (neuere Versionen),
knnen HTTP und FTP URLs bei den meisten Funktionen verwendet werden, die einen
Dateinamen als Parameter bentigen, inklusive <function>require</function>
und <function>include</function> Anweisungen.
</para>
<para>
<note>
<para>
remote files funktionieren nicht mit <function>include</function> und
<function>require</function> Anweisungen unter Windows.
</para>
</note>
</para>
<para>
Beispielsweise kann eine Datei auf einem anderen Webserver geffnet und verarbeitet werden.
Diese Daten knnen zur Abfrage einer Datenbank benutzt werden oder passend zum Rest der eigenen
Website ausgegeben werden.
</para>
<para>
<example>
<title>Den Titel einer entfernten Seite auslesen</title>
<programlisting role="php">
<![CDATA[
<?php
$file = fopen ("http://www.php.net/", "r");
if (!$file) {
echo "<p>Datei konnte nicht geüffnet werden.\n";
exit;
}
while (!feof ($file)) {
$line = fgets ($file, 1024);
/* Funktioniert nur, wenn Titel und title-Tags in einer Zeile stehen */
if (eregi ("<title>(.*)</title>", $line, $out)) {
$title = $out[1];
break;
}
}
fclose($file);
?>
]]>
</programlisting>
</example>
</para>
<para>
Auch eine Datei auf einem FTP-Server kann geschrieben werden, solange man sich ber
einen Benutzer mit entsprechenden Zugriffsrechten verbindet und die Datei noch nicht existiert.
Um sich mit einem anderen Benutzer als 'anonymous' zu verbinden mu ein
username (und mglichst ein Passwort) innerhalb der URL angegeben werden, wie z.B.
'ftp://user:password@ftp.example.com/pfad/zur/datei'. (Die selbe Syntax
kann verwendet werden, um auf Daten via HTTP zuzugreifen, wenn diese eine Basic
Authentication bentigen.)
</para>
<para>
<example>
<title>Daten auf einen entfernten Server speichern</title>
<programlisting role="php">
<![CDATA[
<?php
$file = fopen ("ftp://ftp.php.net/incoming/outputfile", "w");
if (!$file) {
echo "<p>Datei konnte zum schreiben nicht geöffnet werden.\n";
exit;
}
/* Schreibe die Daten hier hin. */
fputs ($file, "$HTTP_USER_AGENT\n");
fclose ($file);
?>
]]>
</programlisting>
</example>
</para>
<para>
<note>
<para>
Obiges Beispiel knnte dazu verleiten, dieses Verfahren zu benutzen, um in ein 'remote log-file'
zu schreiben. Wie oben erwhnt kann man jedoch ausschlielich neue Dateien anlegen,
wenn man URL fopen() wrapper benutzt. Fr 'distributed logging' sollte man sich die Funktion
<function>syslog</function> anschauen.
</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:"../../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
-->
|