<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML ><HEAD ><TITLE >fopen</TITLE ><META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" TITLE="Manual do PHP" HREF="index.html"><LINK REL="UP" TITLE="Filesystem (Sistema de arquivos)" HREF="ref.filesystem.html"><LINK REL="PREVIOUS" TITLE="fnmatch" HREF="function.fnmatch.html"><LINK REL="NEXT" TITLE="fpassthru" HREF="function.fpassthru.html"><META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=UTF-8"></HEAD ><BODY CLASS="refentry" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#840084" ALINK="#0000FF" ><DIV CLASS="NAVHEADER" ><TABLE SUMMARY="Header navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TH COLSPAN="3" ALIGN="center" >Manual do PHP</TH ></TR ><TR ><TD WIDTH="10%" ALIGN="left" VALIGN="bottom" ><A HREF="function.fnmatch.html" ACCESSKEY="P" >Anterior</A ></TD ><TD WIDTH="80%" ALIGN="center" VALIGN="bottom" ></TD ><TD WIDTH="10%" ALIGN="right" VALIGN="bottom" ><A HREF="function.fpassthru.html" ACCESSKEY="N" >Próxima</A ></TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><H1 ><A NAME="function.fopen" ></A >fopen</H1 ><DIV CLASS="refnamediv" ><A NAME="AEN49289" ></A ><P > (PHP 3, PHP 4, PHP 5)</P >fopen -- Abre um arquivo ou uma URL</DIV ><DIV CLASS="refsect1" ><A NAME="AEN49292" ></A ><H2 >Descrição</H2 >resource <B CLASS="methodname" >fopen</B > ( string filename, string mode [, int use_include_path [, resource zcontext]] )<BR ></BR ><P > <B CLASS="function" >fopen()</B > conecta um recurso nomeado, especificado em <CODE CLASS="parameter" >filename</CODE > para um stream. Se <CODE CLASS="parameter" >filename</CODE > está na forma "protocolo://...", é assumido que seja uma URL e o PHP irá procurar por um manipulador de protocolo (também conhecido como wrapper) conforme o prefixo. Se nenhum wrapper para o protocolo estiver registrado, o PHP irá emitir um alerta para ajudá-lo a rastrear problemas potenciais em seu script, presumindo que <CODE CLASS="parameter" >filename</CODE > é um nome de arquivo comum. </P ><P > Se o PHP decidir que <CODE CLASS="parameter" >filename</CODE > se refere a um arquivo local, então ele tentará abrir o stream para aquele arquivo. Esse arquivo precisa ser acessível pelo PHP, então você precisa certificar-se que as permissões de acesso que garantam esse acesso. Se você está com <A HREF="features.safe-mode.html#ini.safe-mode" >safe mode</A > ativado ou <A HREF="features.safe-mode.html#ini.open-basedir" >open_basedir</A >, essas restrições serão aplicadas. </P ><P > Se o PHP decidir que <CODE CLASS="parameter" >filename</CODE > se refere a um protocolo registrado, e que o protocolo está registrado como um URL de rede, o PHP irá verificar se <A HREF="ref.filesystem.html#ini.allow-url-fopen" >allow_url_fopen</A > está ativado. Se ele estiver desligado, o PHP irá emitir um alerta e a chamada a fopen irá falhar. </P ><DIV CLASS="note" ><BLOCKQUOTE CLASS="note" ><P ><B >Nota: </B > A lista de protocolos registrados pode ser encontrada em <A HREF="wrappers.html" >Apêndice N</A >. Alguns protocolos (também conhecidos como <TT CLASS="literal" >wrappers</TT >) suportam opções de <TT CLASS="literal" >context</TT > e/ou <TT CLASS="filename" >php.ini</TT >. Veja na página específica do protocolo em uso para uma lista de opções possíveis. (por exemplo, o valor <TT CLASS="filename" >php.ini</TT > <TT CLASS="literal" >user_agent</TT > utilizado pelo wrapper <TT CLASS="literal" >http</TT >) Para uma descrição de <TT CLASS="literal" >contexts</TT > e o parâmetro <CODE CLASS="parameter" >zcontext</CODE >, veja <A HREF="ref.stream.html" >Referência CLX, <I >Stream Functions</I ></A >. </P ></BLOCKQUOTE ></DIV ><P > O parâmetro <CODE CLASS="parameter" >mode</CODE > configura o tipo de acesso que você precisa no stream. Pode ser um dos seguintes: <DIV CLASS="table" ><A NAME="AEN49335" ></A ><P ><B >Tabela 1. Lista dos possíveis modos de <B CLASS="function" >fopen()</B > para o parâmetro <CODE CLASS="parameter" >mode</CODE > </B ></P ><TABLE BORDER="1" CLASS="CALSTABLE" ><COL><COL><THEAD ><TR ><TH ><CODE CLASS="parameter" >mode</CODE ></TH ><TH >Descrição</TH ></TR ></THEAD ><TBODY ><TR ><TD ><TT CLASS="literal" >'r'</TT ></TD ><TD > Abre somente leitura; coloca o ponteiro do arquico no começo do arquivo. </TD ></TR ><TR ><TD ><TT CLASS="literal" >'r+'</TT ></TD ><TD > Abre para leitura e escrita; coloca o ponteiro do arquivo no começo do arquivo. </TD ></TR ><TR ><TD ><TT CLASS="literal" >'w'</TT ></TD ><TD > Abre para escrita somente; coloca o ponteiro do arquivo no começo do arquivo e diminui (trunca) o tamanho do arquivo para zero. Se o arquivo não existe, tenta criá-lo. </TD ></TR ><TR ><TD ><TT CLASS="literal" >'w+'</TT ></TD ><TD > Abre o arquivo para leitura e escrita; coloca o ponteiro do arquivo no começo e diminui (trunca) o tamanho do arquivo para zero. Se o arquivo não existe, tenta criá-lo. </TD ></TR ><TR ><TD ><TT CLASS="literal" >'a'</TT ></TD ><TD > Abre para escrita somente; coloca o ponteiro do arquivo no final. Se o arquivo não existe, tenta criá-lo. </TD ></TR ><TR ><TD ><TT CLASS="literal" >'a+'</TT ></TD ><TD > Abre o arquivo para leitura e escrita; coloca o ponteiro do arquivo no final. Se o arquivo não existe, tenta criá-lo. </TD ></TR ><TR ><TD ><TT CLASS="literal" >'x'</TT ></TD ><TD > Cria e abre o arquivo para escrita somente; coloca o ponteiro no início do arquivo. Se o arquivo já existe, a chamada a <B CLASS="function" >fopen()</B > irá falhar, retornando <TT CLASS="constant" ><B >FALSE</B ></TT > e gerando um erro nível <TT CLASS="constant" ><B >E_WARNING</B ></TT >. Se o arquivo não existe, tenta criá-lo. Isto é o equivalente a informar as flags <TT CLASS="literal" >O_EXCL|O_CREAT</TT > numa chamada a <TT CLASS="literal" >open(2)</TT >. Esta opção é suportada no PHP 4.3.2 e posteriores, e somente funciona em arquivos locais. </TD ></TR ><TR ><TD ><TT CLASS="literal" >'x+'</TT ></TD ><TD > Cria e abre um arquivo para escrita e leitura; coloca o ponteiro do arquivo no início. Se o arquivo já existe, a chamada a <B CLASS="function" >fopen()</B > irá falhar, retornando <TT CLASS="constant" ><B >FALSE</B ></TT > e gerando um erro nível <TT CLASS="constant" ><B >E_WARNING</B ></TT >. Se o arquivo não existe, tenta criá-lo. Isto é o equivalente a informar as flags <TT CLASS="literal" >O_EXCL|O_CREAT</TT > numa chamada a <TT CLASS="literal" >open(2)</TT >. Esta opção é suportada no PHP 4.3.2 e posteriores, e somente funciona em arquivos locais. </TD ></TR ></TBODY ></TABLE ></DIV > </P ><DIV CLASS="note" ><BLOCKQUOTE CLASS="note" ><P ><B >Nota: </B > Sistemas operacionais diferentes tem convenções de delimitação de linhas diferentes. Quando você escreve num arquivo e deseja inserir uma quebra de linha, você precisa utilizar o(s) caractere(s) de fim de linha adequado(s) em seu sistema operacional. Sistemas baseados no Unix utilizam <TT CLASS="literal" >\n</TT > como final de linha, sistemas baseados no Windows usam <TT CLASS="literal" >\r\n</TT > e sistemas baseados no Macintosh usam <TT CLASS="literal" >\r</TT >. </P ><P > 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. </P ><P > O Windows oferece uma flag de tradução do modo texto (<TT CLASS="literal" >'t'</TT >) que traduz, transparentemente, <TT CLASS="literal" >\n</TT > para <TT CLASS="literal" >\r\n</TT > quando trabalhando no arquivo. Em contraste, você também pode utilizar <TT CLASS="literal" >'b'</TT > para forçar o modo binário, que não irá traduzir o arquivo. Para usar essas flags, informe ou <TT CLASS="literal" >'b'</TT > ou <TT CLASS="literal" >'t'</TT > como o último caracter no parâmetro <CODE CLASS="parameter" >mode</CODE >. </P ><P > O modo do sistema de tradução default depende da versao da SAPI sob o qual você está usando o PHP, então é encorajado a sempre utilizar a flag apropriada por razões de portabilidade. Você deve usar o modo <TT CLASS="literal" >'t'</TT > se estiver trabalhando em arquivos texto simples e utilizar <TT CLASS="literal" >\n</TT > 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 <TT CLASS="literal" >'b'</TT > em todos os outros casos. </P ><P > Se você não especificar a flag 'b' quando trabalhando com arquivos binários, você pode experimentar problemas estranhos com seus dados, incluindo arquivos de imagens danificados e problemas estranhos com os caracteres <TT CLASS="literal" >\r\n</TT >. </P ><P > <SPAN CLASS="emphasis" ><I CLASS="emphasis" >Para portabilidade, é estremamente recomendado que você sempre utilize a flag 'b' quando abrindo arquivos com <B CLASS="function" >fopen()</B >. </I ></SPAN > </P ><P > <SPAN CLASS="emphasis" ><I CLASS="emphasis" >Novamente, por portabilidade, é estremamente recomendável que você re-escreva seu código nas situações em que o modo <TT CLASS="literal" >'t'</TT > deva ser utilizado para corrigir os fim de linha, onde o modo 'b' não deva ser utilizado. </I ></SPAN > </P ><P > <SPAN CLASS="emphasis" ><I CLASS="emphasis" >A partir do PHP 4.3.2, o modo padrão é configurado para binário em todas as plataformas que distinguem entre modo texto e binário. Se você está tendo problemas em seus scripts depois de um upgrade, tente acrescentar a flag<TT CLASS="literal" >'t'</TT > como um paliativo até que você tenha tornado seus scripts portáveis como mencionado acima. </I ></SPAN > </P ></BLOCKQUOTE ></DIV ><P > Você pode usar o terceiro pparâmetro opcional como "1", se você quiser procurar pelo arquivo no <A HREF="ini.core.html#ini.include-path" >include_path</A > também. </P ><P > Se a abertura falhar, a função retorna <TT CLASS="constant" ><B >FALSE</B ></TT > e um erro nível <TT CLASS="constant" ><B >E_WARNING</B ></TT > é gerado. Você pode utilizar <A HREF="language.operators.errorcontrol.html" >@</A > para suprimir esse alerta. </P ><P > <TABLE WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" CLASS="EXAMPLE" ><TR ><TD ><DIV CLASS="example" ><A NAME="AEN49424" ></A ><P ><B >Exemplo 1. exemplo do <B CLASS="function" >fopen()</B ></B ></P ><TABLE BORDER="0" BGCOLOR="#E0E0E0" CELLPADDING="5" ><TR ><TD ><code><font color="#000000"> <font color="#0000BB"><?php<br />$handle </font><font color="#007700">= </font><font color="#0000BB">fopen </font><font color="#007700">(</font><font color="#DD0000">"/home/rasmus/file.txt"</font><font color="#007700">, </font><font color="#DD0000">"r"</font><font color="#007700">);<br /></font><font color="#0000BB">$handle </font><font color="#007700">= </font><font color="#0000BB">fopen </font><font color="#007700">(</font><font color="#DD0000">"/home/rasmus/file.gif"</font><font color="#007700">, </font><font color="#DD0000">"wb"</font><font color="#007700">);<br /></font><font color="#0000BB">$handle </font><font color="#007700">= </font><font color="#0000BB">fopen </font><font color="#007700">(</font><font color="#DD0000">"http://www.example.com/"</font><font color="#007700">, </font><font color="#DD0000">"r"</font><font color="#007700">);<br /></font><font color="#0000BB">$handle </font><font color="#007700">= </font><font color="#0000BB">fopen </font><font color="#007700">(</font><font color="#DD0000">"ftp://user:password@example.com/somefile.txt"</font><font color="#007700">, </font><font color="#DD0000">"w"</font><font color="#007700">);<br /></font><font color="#0000BB">?></font> </font> </code></TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE > </P ><P > Se você está tendo problemas com a leitura e gravação para arquivos e você está usando a versão de modulo 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. </P ><P > Na plataforma Windows, tenha cuidado para usar uma segunda barra invertida (escape) nos caminhos de arquivos, ou usar a barra normal. <DIV CLASS="informalexample" ><P ></P ><A NAME="AEN49430" ></A ><TABLE BORDER="0" BGCOLOR="#E0E0E0" CELLPADDING="5" ><TR ><TD ><code><font color="#000000"> <font color="#0000BB"><?php<br />$handle </font><font color="#007700">= </font><font color="#0000BB">fopen </font><font color="#007700">(</font><font color="#DD0000">"c:\\data\\info.txt"</font><font color="#007700">, </font><font color="#DD0000">"r"</font><font color="#007700">);<br /></font><font color="#0000BB">?></font> </font> </code></TD ></TR ></TABLE ><P ></P ></DIV > </P ><P > Veja também: <A HREF="wrappers.html" >Apêndice N</A >, <A HREF="function.fclose.html" ><B CLASS="function" >fclose()</B ></A >, <A HREF="function.fgets.html" ><B CLASS="function" >fgets()</B ></A >, <A HREF="function.fread.html" ><B CLASS="function" >fread()</B ></A >, <A HREF="function.fwrite.html" ><B CLASS="function" >fwrite()</B ></A >, <A HREF="function.fsockopen.html" ><B CLASS="function" >fsockopen()</B ></A >, <A HREF="function.file.html" ><B CLASS="function" >file()</B ></A >, <A HREF="function.file-exists.html" ><B CLASS="function" >file_exists()</B ></A >, <A HREF="function.is-readable.html" ><B CLASS="function" >is_readable()</B ></A >, <A HREF="function.stream-set-timeout.html" ><B CLASS="function" >stream_set_timeout()</B ></A > e <A HREF="function.popen.html" ><B CLASS="function" >popen()</B ></A >. </P ></DIV ><DIV CLASS="NAVFOOTER" ><HR ALIGN="LEFT" WIDTH="100%"><TABLE SUMMARY="Footer navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" ><A HREF="function.fnmatch.html" ACCESSKEY="P" >Anterior</A ></TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="index.html" ACCESSKEY="H" >Principal</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" ><A HREF="function.fpassthru.html" ACCESSKEY="N" >Próxima</A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" >fnmatch</TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="ref.filesystem.html" ACCESSKEY="U" >Acima</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" >fpassthru</TD ></TR ></TABLE ></DIV ></BODY ></HTML >