פרק 20. שימוש בקבצים מרוחקים

אם אפשרות ה" URL fopen wrapper " פעילה (היא פעילה כברירת מחדל אלא אם ציינת מפורשות את דגל ה --disable-url-fopen-wrapper לסקריפט ה - configure (עד גרסה 4.0.3 ) או שקבעת את פרמטר ה - allow_url_fopen ל-off בקובץ php.ini (בגרסאות חדשות יותר)) , ניתן להשתמש בקישורי HTTP ו-FTP כפרמטר לרוב הפונקציות שמקבלות שם קובץ כפרמטר , כולל הפקודות require( ) ו - include( ) .

הערה : לא ניתן להשתמש בקבצים מרוחקים בפקודות require( ) ו - include( ) תחת מערכת וינדוס .



לדוגמה , ניתן להשתמש בתכונה זו על-מנת לקרוא קובץ משרת web מרוחק , לעבד את תוכנו , לחפש את המידע המבוקש ולבסוף , להשתמש במידע זה לאכסון בבסיס הנתונים או פשוט להציגו בצורה שתתאים לשאר עיצוב האתר .

דוגמה 20-1 . יבוא הכותרת של עמוד מרוחק

 
?php

 
$file

 
=

 
fopen

 
(

 
"http

 
:

 
/

 
/www.php.net

 
/

 
"

 
,

 
"r")

 
;

 
if

 
(!$file

 
)

 
{

 
echo

 
"

 
p

 
Unable

 
to

 
open

 
remote

 
file.\n"

 
;

 
exit

 
;

 
}

 
while

 
(!feof

 
($file)

 
)

 
{

 
$line

 
=

 
fgets

 
($file

 
,

 
1024)

 
;

 
/

 
*

 
This

 
only

 
works

 
if

 
the

 
title

 
and

 
its

 
tags

 
are

 
on

 
one

 
line

 
*

 
/

 
if

 
(eregi

 
(

 
"

 
title

 
(.*

 
)

 
/

 
title

 
"

 
,

 
$line

 
,

 
$out)

 
)

 
{

 
$title

 
=

 
$out[1]

 
;

 
break

 
;

 
    }

 
}

 
fclose($file)

 
;

 
?





ניתן גם לכתוב לקבצים ב-FTP כל עוד החיבור נעשה תוך שימוש בשם וסיסמת משתמש בעלי הרשאות מתאימות ובתנאי שהקובץ לא קיים . כדי להתחבר ל FTP בתור משתמש שונה מ -' anonymous' , יש לפרט את שם המשתמש (ויתכן שידרש גם פירוט הסיסמה ) בקישור , כמו למשל 'ftp : / /user:password@ftp.example.com / path / to / file' . (ניתן להשתמש באותו תחביר כאשר ברצוננו להתחבר לקבצים דרך HTTP כאשר נדרשת אוטנטיקציה בסיסית Basic authentication ) .

דוגמה 20-2 . כתיבת מידע לשרת מרוחק

 
?php

 
$file

 
=

 
fopen

 
(

 
"ftp

 
:

 
/

 
/ftp.php.net

 
/

 
incoming

 
/

 
outputfile"

 
,

 
"w")

 
;

 
if

 
(!$file

 
)

 
{

 
echo

 
"

 
p

 
Unable

 
to

 
open

 
remote

 
file

 
for

 
writing.\n"

 
;

 
exit

 
;

 
}

 
/

 
*

 
Write

 
the

 
data

 
here

 
.

 
*

 
/

 
fputs

 
($file

 
,

 
"$HTTP_USER_AGENT\n")

 
;

 
fclose

 
($file)

 
;

 
?





הערה : יתכן שהדוגמה הזו נראית כמו יצירת קובץ log בשרת מרוחק אך כמו שצויין קודם לכן , הכתיבה יכולה להתבצע רק אם הקובץ שאליו כותבים לא קיים . כדי לבצע פעולה דומה , עיינו ב - syslog( ) .