Forum und email

שימוש בקבצים מרוחקים

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

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

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

Example#1 יבוא הכותרת של עמוד מרוחק

<?php
$file 
fopen ("https://www.php.net/""r");
if (!
$file) {
    echo 
"<p>Unable to open remote file.\n";
    exit;
}
while (!
feof ($file)) {
    
$line fgets ($file1024);
    
/* 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:[email protected]/path/to/file'. (ניתן להשתמש באותו תחביר כאשר ברצוננו להתחבר לקבצים דרך HTTP כאשר נדרשת אוטנטיקציה בסיסית Basic authentication ).

Example#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);
?>

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