Forum und email

Aπομακρυσμένα αρχεία

Όσο το allow_url_fopen είναι ενεργοποιημήνο στο php.ini, μπορείτε να χρησιμοποιείτε τα HTTP και FTP URL με τις περισσότερες συναρτήσεις που παίρνουν ένα όνομα αρχείου σαν παράμετρο. Επιπλέον, τα URL μπορούν να χρησιμοποιηθούν με τις include(), include_once(), require() και require_once() δηλώσεις. Δείτε το List of Supported Protocols/Wrappers για περισσότερες πληροφορίες σχετικά με τα πρωτόκολλα που υποστηρίζονται από την PHP.

Note: Στην PHP 4.0.3 και παλαιότερα, για να χρησιμοποιήσετε ταURL wrappers, χρειαζόταν να κάνετε configure τη PHP χρησιμοποιώντας την επιλογή του configure --enable-url-fopen-wrapper.

Note: Οι Windows εκδόσεις της PHP πριν την PHP 4.3 δεν υποστήριζαν πρόσβαση απομακρυσμένων αρχείων για τις ακόλουθες συναρτήσεις: include(), include_once(), require(), require_once(), και τις imagecreatefromXXX συναρτήσεις στην Image επέκταση.

Για παράδειγμα, μπορείτε να χρησιμοποιήσετε το εξής για να ανοίξετε ένα αρχείο σε ένα remote web server, να διαβάσετε τα δεδομένα που θέλετε, και μετά να χρησιμοποιήσετε τα δεδομένα σε μια ερώτηση βάσης δεδομένων, ή απλά να κάνετε output σε ένα στυλ που ταιριάζει την υπόλοιπη ιστοσελίδα σας.

Example#1 Παίρνοντας τον τίτλο μιας απομακρυσμένης σελίδας

<?php
$file 
fopen ("https://www.example.com/""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 server (δεδομένου του ότι έχετε συνδεθεί σαν ένας χρήστης με τα σωστά δικαιώματα πρόσβασης). Μπορείτε μόνο να δημιουργήσετε νέα αρχεία με αυτή τη μέθοδο, αν προσπαθήσετε να κάνετε overwrite ένα αρχείο που υπάρχει ήδη, η κλήση της fopen() θα αποτύχει.

Για να συνδεθείτε σαν ένας χρήστης άλλος από τον 'anonymous', πρέπει να ορίσετε το username (και πιθανώς το password) μέσα στο URL, κάπως έτσι: 'ftp://user:[email protected]/path/to/file'. (Μπορείτε να χρησιμοποιήσετε την ίδια μορφή σύνταξης για να προσπελάσετε αρχεία μέσω του HTTP όταν απαιτούν βασική αναγνώριση.)

Example#2 Αποθήκευση δεδομένων σε ένα απομακρυσμένο server

<?php
$file 
fopen ("ftp://ftp.example.com/incoming/outputfile""w");
if (!
$file) {
    echo 
"<p>Unable to open remote file for writing.\n";
    exit;
}
/* Write the data here. */
fputs ($file$_SERVER['HTTP_USER_AGENT'] . "\n");
fclose ($file);
?>

Note: Μπορεί να πήρατε την ιδέα από το παραπάνω παράδειγμα πως μπορείτε να χρησιμοποιήσετε αυτή την τεχνική για να γράψετε σε ένα απομακρυσμένο logfile. Δυστυχώς αυτό δεν θα δουλέψει επειδή η κλήση της fopen() θα αποτύχει αν το απομακρυσμένο αρχείο υπάρχει ήδη. Για να κάνετε κατανεμημένο logging έτσι, πρέπει να ρίξετε μια ματιά στην syslog().