PHP fopen() function
Definition and Usage
The fopen() function opens a file or URL.
If the opening fails, this function returns FALSE.
Syntax
fopen(filename,mode,include_path,context)
Parameter | Description |
---|---|
filename | Required. Specifies the file or URL to be opened. |
mode | Required. Specifies the type of access to the file/stream required. Possible values are listed in the table below. |
include_path | Optional. If you also need to search for files in the include_path, you can set this parameter to 1 or TRUE. |
context | Optional. Specifies the environment for the file handle. Context is a set of options that can modify the behavior of the stream. |
Possible values for the mode parameter
mode | spiega |
---|---|
"r" | Open in read-only mode, moving the file pointer to the beginning of the file. |
"r+" | Open in read/write mode, moving the file pointer to the beginning of the file. |
"w" | Open in write mode, moving the file pointer to the beginning of the file and truncating the file size to zero. If the file does not exist, it will attempt to create it. |
"w+" | Open in read/write mode, moving the file pointer to the beginning of the file and truncating the file size to zero. If the file does not exist, it will attempt to create it. |
"a" | Open in write mode, moving the file pointer to the end of the file. If the file does not exist, it will attempt to create it. |
"a+" | Open in read/write mode, moving the file pointer to the end of the file. If the file does not exist, it will attempt to create it. |
"x" |
Create and open the file in write mode, moving the file pointer to the beginning of the file. If the file already exists, the fopen() call fails and returns FALSE, generating an E_WARNING level error message. If the file does not exist, it will attempt to create it. è equivalente a specificare O_EXCL|O_CREAT per la chiamata di sistema di basso livello open(2). Questa opzione è supportata da PHP 4.3.2 e versioni successive, può essere utilizzata solo per file locali. |
"x+" |
crea e apre in modalità lettura/scrittura, sposta il puntatore del file all'inizio del file. Se il file esiste, la chiamata fopen() fallisce e restituisce FALSE, generando un messaggio di errore di livello E_WARNING. Se il file non esiste, tenta di crearlo. è equivalente a specificare O_EXCL|O_CREAT per la chiamata di sistema di basso livello open(2). Questa opzione è supportata da PHP 4.3.2 e versioni successive, può essere utilizzata solo per file locali. |
spiega
fopen() filename legge il nome delle risorse specificate e li binda a un flusso. Se filename è "scheme://...se il formato è "scheme://...", viene considerato un URL, PHP cerca il gestore del protocollo (noto anche come protocollo di inwrap) per gestire tale modello. Se il protocollo non è registrato come protocollo di inwrap, PHP emette un messaggio per aiutare a controllare i problemi potenziali nel script e filename prosegue come un nome di file comune.
se PHP pensa che filename specifica un file locale, tenta di aprire un flusso su tale file. Il file deve essere accessibile da PHP, quindi è necessario confermare che i permessi di accesso al file consentano tale accesso. Se è attivato il modalità sicura o open_basedir verranno applicate ulteriori limitazioni.
se PHP pensa che filename specifica un protocollo registrato, che viene registrato come URL di rete, PHP verifica e conferma che allow_url_fopen sia stato attivato. Se disattivato, PHP emette un avviso e il chiamare fopen fallisce.
per context è stato aggiunto in PHP 5.0.0.
Suggerimenti e commenti
Nota:Le diverse famiglie di sistemi operativi hanno abitudini di fine riga diverse. Quando si scrive un file di testo e si desidera inserire una nuova riga, è necessario utilizzare il segno di fine riga conforme al sistema operativo. I sistemi basati su Unix utilizzano \n come segno di fine riga, i sistemi basati su Windows utilizzano \r\n come segno di fine riga, e i sistemi basati su Macintosh utilizzano \r come segno di fine riga. Se si utilizza un segno di fine riga errato durante la scrittura di un file, altre applicazioni che aprono questi file potrebbero comportarsi in modo strano.
Windows fornisce un segno di conversione del testo ("t") che trasforma trasparentemente \n in \r\n. In corrispondenza di questo si può anche usare "b" per forzare l'uso del modello binario, in modo che i dati non vengano convertiti. Per utilizzare questi segni, sia "b" che "t" devono essere l'ultimo carattere del parametro mode.
Il modello di conversione predefinito dipende dal SAPI e dalla versione di PHP utilizzata, quindi per facilitare la portabilità si incoraggia sempre a specificare il segnaposto appropriato. Se si operano su file di testo puri e si utilizza \n come segnaposto di fine riga nel script, ma si desidera che questi file possano essere letti da altre applicazioni come Notepad, utilizzare "t" nel modello. In tutti gli altri casi utilizzare "b".
Quando si operano su file binari senza specificare il segnaposto "b", potrebbe sorgere alcuni problemi strani, inclusi file di immagini danneggiati e problemi strani riguardanti i caratteri \r\n.
Nota:Per motivi di portabilità, si consiglia vivamente di utilizzare sempre il segnaposto "b" quando si apre un file con fopen().
Nota:Di nuovo, per motivi di portabilità, si consiglia vivamente di riscrivere il codice che dipende dallo "schema "t"" utilizzando il segnaposto di fine riga corretto e cambiando lo schema in "b".
Esempio
<?php $file = fopen("test.txt","r"); $file = fopen("/home/test/test.txt","r"); $file = fopen("/home/test/test.gif","wb"); $file = fopen("http://www.example.com/","r"); $file = fopen("ftp://user:password@example.com/test.txt","w"); ?>