fnmatch
fpassthru
Funções para Sistema de arquivo
PHP Manual

# fopen

(PHP 4, PHP 5)

fopen — Abre um arquivo ou URL

### Descrição

resource fopen ( string `$filename` , string `$mode` [, bool `$use_include_path` [, resource `$context` ]] )

fopen() conecta um recurso nomeado, especificado por `filename`, a um stream.

### Parâmetros

`filename`

  Se `filename` estiver na forma de "scheme://...", é assumido que seja uma URL, e o PHP buscará por um manipulador de protocolo (também conhecido como wrapper) para aquele scheme. Se nenhum wrapper para aquele protocolo estiver registrado, o PHP emitirá um aviso para ajudá-lo a rastrear potenciais problemas no seu script, e então continuará presumindo que `filename` especifica um nome de arquivo.

  Se o PHP decidiu que `filename` se refere a um arquivo local, então ele tentará abrir um stream para aquele arquivo. O arquivo precisa ser acessível pelo PHP, então você precisa assegurar que as permissões de acesso do arquivo permitem este acesso. Se você tiver ativado safe mode ou open_basedir, outras restrições podem se aplicar.

  Se o PHP decidiu que `filename` se refere a um protocolo registrado e esse protocolo estiver registrado como um protocolo de rede, o PHP irá verificar para ter certeza que allow_url_fopen está ativado. Se estiver desligado, o PHP emitirá um alerta e a chamada ao fopen irá falhar.

  > Nota: A lista de protocolos suportados pode ser encontrada em List of Supported Protocols/Wrappers. Alguns protocolos (também mencionados como wrappers) suportam context e/ou opções do php.ini. Recorra à página específica do protocolo em uso para uma lista das opções que podem ser definidas. (ex.: o valor php.ini user_agent utilizado pelo wrapper http).

  Na plataforma Windows, tenha cuidado de escapar qualquer barra invertida usada no caminho do arquivo, ou use barras normais.

  `<?php
  $handle = fopen("c:\\data\\info.txt", "r");
  ?>`
`mode`

  O parâmetro `mode` especifica o tipo de acesso que você precisa ao stream. Pode ser um dos seguintes:

  Lista dos possíveis modos de fopen() utilizando `mode`
  `mode` | Descrição
  --- | ---
  'r' | Abre somente para leitura; coloca o ponteiro do arquivo no começo do arquivo.
  'r+' | Abre para leitura e escrita; coloca o ponteiro do arquivo no começo do arquivo.
  'w' | Abre somente para escrita; coloca o ponteiro do arquivo no começo do arquivo e reduz o comprimento do arquivo para zero. Se o arquivo não existir, tenta criá-lo.
  'w+' | Abre para leitura e escrita; coloca o ponteiro do arquivo no começo do arquivo e reduz o comprimento do arquivo para zero. Se o arquivo não existir, tenta criá-lo.
  'a' | Abre somente para escrita; coloca o ponteiro do arquivo no final do arquivo. Se o arquivo não existir, tenta criá-lo.
  'a+' | Abre para leitura e escrita; coloca o ponteiro do arquivo no final do arquivo. Se o arquivo não existir, tenta criá-lo.
  'x' | Cria e abre o arquivo somente para escrita; coloca o ponteiro no começo do arquivo. Se o arquivo já existir, a chamada a fopen() falhará, retornando `FALSE` e gerando um erro de nível `E_WARNING`. Se o arquivo não existir, tenta criá-lo. Isto é equivalente a especificar as flags O_EXCL|O_CREAT para a chamada de sistema open(2).
  'x+' | Cria e abre o arquivo para leitura e escrita; coloca o ponteiro no começo do arquivo. Se o arquivo já existir, a chamada a fopen() falhará, retornando `FALSE` e gerando um erro de nível `E_WARNING`. Se o arquivo não existir, tenta criá-lo. Isto é equivalente a especificar as flags O_EXCL|O_CREAT para a chamada de sistema open(2).

  > Nota: Famílias de sistemas operacionais diferentes têm convenções de delimitação de linhas diferentes. Quando você escreve um arquivo texto e quer inserir uma quebra de linha, você precisa utilizar o(s) caractere(s) de fim de linha adequado(s) ao seu sistema operacional. Sistemas baseados no Unix utilizam \n como caractere de final de linha, sistemas baseados no Windows utilizam \r\n e sistemas baseados no Macintosh utilizam \r.
  > Se escrever caracteres de fim de linha inadequados em seus arquivos, eles deverão "parecer engraçados" quando você os abrir em outras aplicações.
  > O Windows oferece uma flag de tradução do modo texto ('t') que traduz, transparentemente, \n para \r\n quando trabalhando no arquivo. Em contraste, você também pode utilizar 'b' para forçar o modo binário, que não irá traduzir o arquivo. Para usar essas flags, informe ou 'b' ou 't' como o último caractere no parâmetro `mode`.
  > O modo de tradução padrão depende da SAPI e da versão do PHP que você estiver usando, então você é encorajado a sempre utilizar a flag apropriada por razões de portabilidade. Você deve usar o modo 't' se estiver trabalhando em arquivos texto simples e utilizar \n para delimitar as linhas em seu script, de forma que você pode esperar que eles sejam lidos em outras aplicações como o Notepad. Você deve usar 'b' em todos os outros casos.
  > Se você não especificar a flag 'b' quando trabalhar com arquivos binários, você pode passar por problemas estranhos com seus dados, incluindo arquivos de imagens danificados e problemas estranhos com os caracteres \r\n.

  > Nota: Para portabilidade, é fortemente recomendado que você sempre utilize a flag 'b' quando abrir arquivos com fopen().

  > Nota: Novamente para portabilidade, também é fortemente recomendado que você reescreva códigos que utilizem ou confiem no modo 't', de forma que passem a utilizar os fins de linha corretos e o modo 'b'.

`use_include_path`

  O terceiro parâmetro opcional `use_include_path` pode ser definido para '1' ou `TRUE` se você quiser buscar o arquivo também no include_path.

`context`

  > Nota: O suporte ao contexto foi adicionado com o PHP 5.0.0. Para uma descrição de contextos, veja Stream Funções

### Valor Retornado

Retorna um recurso de ponteiro de arquivo em caso de sucesso, ou `FALSE` em caso de erro.

### Erros

Se a abertura falhar, um erro nível `E_WARNING` é gerado. Você pode utilizar @ para suprimir esse alerta.

### Histórico

Versão | Descrição
--- | ---
4.3.2 | A partir do PHP 4.3.2, o modo padrão é definido para binário em todas as plataformas que distinguem entre modo texto e binário. Se você estiver tendo problemas com seus scripts depois de uma atualização, tente acrescentar a flag 't' como um paliativo até que você tenha tornado seus scripts portáveis como mencionado acima.
4.3.2 | As opções 'x' e 'x+' foram adicionadas

### Exemplos

Exemplo #1 Exemplos de fopen()

`<?php
$handle = fopen("/home/rasmus/file.txt", "r");
$handle = fopen("/home/rasmus/file.gif", "wb");
$handle = fopen("http://www.example.com/", "r");
$handle = fopen("ftp://user:password@example.com/somefile.txt", "w");
?>`

### Notas

Aviso

Quando usando SSL, o Microsoft IIS irá violar o protocolo fechando a conexão sem enviar uma notificação close_notify. O PHP acusará isso como sendo "SSL: Fatal Protocol Error" quando tentar ler os dados. Para prevenir isso, o valor de error_reporting deve ser reduzido para um nível que não inclui avisos. para o nível que não emita warnings. O PHP 4.3.7 e seguintes conseguem detectar servidores IIS defeituosos quando você abre um stream utilizando o wrapper https:// e suprimirá os avisos. Se você está usando fsockopen() para criar um socket ssl://, a responsabilidade de detectar e suprimir esse aviso passa para você.

> Nota: Quando o safe-mode está ativo, o PHP verifica se o diretório no qual o script está em operação tem o mesmo UID (proprietário) do script que está sendo executado.

Se você está tendo problemas com a leitura e gravação para arquivos e você está usando a versão de módulo de servidor do PHP, lembre-se de que os arquivos e diretórios que você está usando precisam ser acessíveis ao processo do servidor HTTP.

### Veja Também

- List of Supported Protocols/Wrappers
- fclose() - Fecha um ponteiro de arquivo aberto
- fgets() - Lê uma linha de um ponteiro de arquivo
- fread() - Leitura binary-safe de arquivo
- fwrite() - Escrita binary-safe em arquivos
- fsockopen() - Abre um socket de conexão Internet ou de domínio Unix
- file() - Lê todo o arquivo para um array
- file_exists() - Checa se um arquivo ou diretório existe
- is_readable() - Diz se o arquivo pode ser lido
- stream_set_timeout() - Set timeout period on a stream
- popen() - Abre um processo como ponteiro de arquivo
- stream_context_create() - Create a streams context

fnmatch
fpassthru
Funções para Sistema de arquivo
PHP Manual