PHP fopen() function
Definition and Usage
The fopen() function opens a file or URL.
If the operation 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 requested. Possible values are listed in the table below. |
include_path | Optional. If you also need to retrieve files from the include_path, you can set this parameter to 1 or TRUE. |
context | Optional. Specifies the environment of the file handle. Context is a set of options that can modify the behavior of the stream. |
Possible values of the mode parameter
mode | instrução |
---|---|
"r" | Open in read-only mode, and point the file pointer to the beginning of the file. |
"r+" | Open in read-write mode, and point the file pointer to the beginning of the file. |
"w" | Open in write mode, point the file pointer to the beginning of the file, and truncate the file size to zero. If the file does not exist, it attempts to create it. |
"w+" | Open in read-write mode, point the file pointer to the beginning of the file, and truncate the file size to zero. If the file does not exist, it attempts to create it. |
"a" | Open in write mode, and point the file pointer to the end of the file. If the file does not exist, it attempts to create it. |
"a+" | Open in read-write mode, and point the file pointer to the end of the file. If the file does not exist, it attempts to create it. |
"x" |
Create and open the file in write mode, and point the file pointer to the beginning of the file. If the file already exists, the fopen() call fails and returns FALSE, and an E_WARNING level error message is generated. If the file does not exist, it attempts to create it. isto é equivalente a especificar os marcadores O_EXCL|O_CREAT para a chamada de sistema de baixo nível open(2). esta opção é suportada pelo PHP 4.3.2 e versões posteriores, e pode ser usada apenas para arquivos locais. |
"x+" |
criar e abrir em modo leitura/escrita, movendo o ponteiro do arquivo para o início do arquivo. Se o arquivo já existir, a chamada fopen() falhará e retornará FALSE, gerando uma mensagem de erro de nível E_WARNING. Se o arquivo não existir, tentará criá-lo. isto é equivalente a especificar os marcadores O_EXCL|O_CREAT para a chamada de sistema de baixo nível open(2). esta opção é suportada pelo PHP 4.3.2 e versões posteriores, e pode ser usada apenas para arquivos locais. |
instrução
fopen() vai filename o nome de recurso especificado é mapeado para um fluxo. Se filename é "scheme://...se o formato "" for usado, ele será tratado como uma URL, o PHP buscará um processador de protocolo (também conhecido como protocolo encapsulado) para tratar esse padrão. Se o protocolo não for registrado como um protocolo encapsulado, o PHP emitirá uma mensagem para ajudar a verificar problemas potenciais no script e filename continuar como um nome de arquivo comum.
se o PHP considerar filename especifica um arquivo local, tentará abrir um fluxo no arquivo. O arquivo deve ser acessível pelo PHP, portanto, é necessário confirmar que as permissões de acesso ao arquivo permitem essa acesso. Se o modo de segurança ou open_basedir estiver ativado, aplicam-se limitações adicionais.
se o PHP considerar filename especifica um protocolo registrado, e esse protocolo é registrado como uma URL de rede URL, o PHP verificará e confirmará se o allow_url_fopen foi ativado. Se desativado, o PHP emitirá um aviso e a chamada fopen falhará.
para context o suporte foi adicionado no PHP 5.0.0.
Sugestões e comentários
Comentário:Famílias de sistemas operacionais diferentes têm hábitos de fim de linha diferentes. Quando se escreve um arquivo de texto e se deseja inserir uma nova linha, é necessário usar o caractere de fim de linha compatível com o sistema operacional. Sistemas baseados em Unix usam \n como caractere de fim de linha, sistemas baseados em Windows usam \r\n como caractere de fim de linha, e sistemas baseados em Macintosh usam \r como caractere de fim de linha. Se ao escrever em um arquivo for usado o caractere de fim de linha incorreto, outros aplicativos que abrirem esses arquivos podem se comportar de maneira estranha.
No Windows oferece um marcador de conversão de texto ("t") que converte transparentemente \n para \r\n. Em correspondência, também pode ser usado "b" para forçar o uso do modo binário, assim não haverá conversão de dados. Para usar esses marcadores, use "b" ou "t" como o último caractere do parâmetro mode.
O modo de conversão padrão depende do SAPI e da versão do PHP usada, portanto, para facilitar a portabilidade, é encorajado que você sempre especifique o sinal apropriado. Se você estiver operando arquivos de texto puros e estiver usando \n como caractere de final de linha no script, mas ainda espera que esses arquivos possam ser lidos por outros aplicativos, como o Notepad, use "t" no modo. Em todos os outros casos, use "b".
Ao operar arquivos binários sem especificar o sinal "b", pode encontrar alguns problemas estranhos, incluindo arquivos de imagens corrompidos e problemas estranhos com os caracteres \r\n.
Comentário:Por considerações de portabilidade, é altamente recomendável que você sempre use o sinal "b" ao abrir arquivos com fopen().
Comentário:Mais uma vez, por considerações de portabilidade, é altamente recomendável que você reescreva o código que depende do "t" para usar o correto caractere de final de linha e mude para o modo "b".
Exemplo
<?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"); ?>