Wenn
die
Unterstützung
für
den
"
URL
fopen
wrapper
"
bei
der
Konfiguration
von
PHP
vorhanden
ist
(welche
standardmäßig
eingestellt
ist
,
es
sei
denn
,
die
Option
--disable-url-fopen-wrapper
wurde
bei
der
Installation
verwendet
(Versionen
bis
4.0.3
)
oder
der
Parameter
allow_url_fopen
in
der
php.ini
deaktiviert
wurde
(neuere
Versionen)
,
können
HTTP
und
FTP
URLs
bei
den
meisten
Funktionen
verwendet
werden
,
die
einen
Dateinamen
als
Parameter
benötigen
,
inklusive
require(
)
und
include(
)
Anweisungen
.
Anmerkung
:
remote
files
funktionieren
nicht
mit
include(
)
und
require(
)
Anweisungen
unter
Windows
.
Beispielsweise
kann
eine
Datei
auf
einem
anderen
Webserver
geöffnet
und
verarbeitet
werden
.
Diese
Daten
können
zur
Abfrage
einer
Datenbank
benutzt
werden
oder
passend
zum
Rest
der
eigenen
Website
ausgegeben
werden
.
Beispiel
19-1
.
Den
Titel
einer
entfernten
Seite
auslesen
?php
$file
=
fopen
(
"http
:
/
/www.example.com
/
"
,
"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)
;
?
|
|
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
möglichst
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
benötigen
.
)
Beispiel
19-2
.
Daten
auf
einen
entfernten
Server
speichern
?php
$file
=
fopen
(
"ftp
:
/
/ftp.example.com
/
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)
;
?
|
|
Anmerkung
:
Obiges
Beispiel
könnte
dazu
verleiten
,
dieses
Verfahren
zu
benutzen
,
um
in
ein
'
remote
log-file
'
zu
schreiben
.
Wie
oben
erwähnt
kann
man
jedoch
ausschließlich
neue
Dateien
anlegen
,
wenn
man
URL
fopen(
)
wrapper
benutzt
.
Für
'
distributed
logging
'
sollte
man
sich
die
Funktion
syslog(
)
anschauen
.