Trabalhando com ficheiros – Leitura
De vez em quando é necessário
ler, alterar ou criar ficheiros no servidor de Internet,
como por exemplo, para criar contadores de acesso, estatísticas
de visitas ou guardar algumas informações
para visualizações posteriores que são
demoradas para serem criadas pelo servidor, e que não
seria muito bom gerá-las sempre que um visitante
as quisesse ver.
O PHP↳PHP44 conteúdosPadronizando seu código com PHP CS FixerDev (Back & Front) · mai 2019Docker de imagem. Para rodar projetos PHP em menos de 30 segundosDev (Back & Front) · jan 2026PHP 7.3: conheça as novidades desta versãoDev (Back & Front) · abr 2019Ver tudo em Dev (Back & Front) → fornece um conjunto de funções
muito boas para isto, e com alguns cuidados, os scripts
funcionarão tanto em Windows como em Linux↳Linux34 conteúdosKali Linux em um Servidor VPS: como, quando e por que usar?DevSecOps · dez 2024Construindo um Windows Service ou Linux Daemon com Worker Service & .NET Core – Parte 2Dev (Back & Front) · jul 2020Criando uma WebApi utilizando .NET, Linux e VSCodeDev (Back & Front) · ago 2019Ver tudo em DevSecOps → sem
nenhuma alteração. Todas essas funções
podem ser encontradas no manual do php, em "Filesystem
functions".
Abrir ficheiros
A
primeira função que se deve conhecer para
trabalhar com ficheiros é a que cria uma ligação
entre o script e o ficheiro propriamente dito:
int fopen( string
ficheiro, string modo [, int usa_include_path] );
Esta função devolve um
ponteiro para um ficheiro, que é utilizado noutras
funções para lidar com ficheiros. O primeiro
parâmetro, ficheiro, é uma string que indica
o local do ficheiro a ser aberto, aqui vai a primeira
dica: não utilize o modo de referência
do windows, como c:wwwficheiro.txt, pois não
irá funcionar num servidor linux! Evite também
ler e gravar ficheiros fora do directório onde
o teu site está hospedado, às vezes torna-se
difícil criar um directório fora do directório
do site, e, se um dia quiseres transferir o teu site
para uma outra máquina, pode acontecer que te
esqueças daquele directório isolado. Vamos
supor que o site tem um subdirectório "tmp"
e que tem dentro um ficheiro novidades.txt. Para abrir
o ficheiro usamos:
<?php
$fd = fopen( "tmp/novidades.txt", "r"
);
…
?>
Note que mesmo que este script seja
executado em windows ele irá funcionar. Excelente!
Nada melhor que programar com uma linguagem que funciona
em vários sistemas operativos sem alterações!
O segundo parâmetro informa o PHP que o ficheiro
deve ser aberto so para leitura, os modos possíveis
podem ser:
r – so leitura, coloca o ponteiro
no início do ficheiro
r+ – leitura e gravação, coloca
o ponteiro no início do ficheiro
w – so gravação, limpa o ficheiro
(deixa-o com 0 bytes) e coloca o ponteiro no início
do ficheiro. Se o ficheiro não existir, tenta
criá-lo.
w+ – leitura e gravação, limpa
o ficheiro (deixa-o com 0 bytes) e coloca o ponteiro
no início do ficheiro. Se o ficheiro não
existir, tenta criá-lo
a – so gravação, coloca o ponteiro
no final do ficheiro. Se o ficheiro não existir,
tenta criá-lo.
a+ – leitura e gravação, limpa
o ficheiro (deixa-o com 0 bytes) e coloca o ponteiro
no final do ficheiro. Se o ficheiro não existir,
tenta criá-lo
Existe ainda a opção "b"
que pode ser utilizada com os modos (sozinha não
funciona!), esta opção indica que o ficheiro
deve ser tratado como binário em vez de texto,
ou seja, se o programa for lidar com imagens em vez
de um ficheiro de texto comum. É de vital importância
no windows para ler imagens, ou caso contrário
o programa não irá funcionar. Como o Linux
e Unix não fazem diferença entre um ficheiro
de texto e um binário, essa opção
não terá nenhum efeito, portanto, se o
seu programa for trabalhar com imagens, não custa
nada adicionar esta opção. (programas
multiplataforma são excelentes!)
AVISO: Como no windows (95/98/CE/ME)
não existe permissão de acesso a ficheiros
os programas funcionarão como desejado, podemos
criar ficheiros, acede-los, excluí-los e muito
mais. No Linux começam a surgir alguns problemas,
normalmente os ficheiros e directórios de um
servidor de Internet são de um utilizador e o
servidor http (apache, por exemplo) corre como um outro
utilizador, o php corre com o mesmo utilizador do servidor
http, portanto se este utilizador não tiver permissão
para gravar num directório, não será
possível criar os ficheiros pelo php, nem alterá-los.
O terceiro parâmetro é
opcional, e se seu valor for 1, o php irá procurar
nos directórios informados na configuração
"include_path" do php.ini.
Se a função fopen falhar
ao abrir ou ao criar o ficheiro, ela retorna false.
Note que se for utilizado o parâmetro "r"(somente
leitura) ou "r+" e o ficheiro não existir,
a função fopen não irá tentar
criá-lo, simplesmente retornará um erro,
e mostrará um aviso no browser do utilizador.
Caso não seja muito bom mostrar esse tipo de
erro para o utilizador (toda a gente que vir essa mensagem
vai querer ler esse ficheiro directamente no browser),
utilize o @ antes da função e confira
o resultado:
<?php
$fd = @fopen( "tmp/novidades.txt", "r"
) or die( "ops, avise o webmaster, que está
a faltar um ficheiro no servidor");
…
?>
Mesmo que tenhas a certeza que este
ficheiro está por lá, usa este método,
pois nem sempre as coisas são como esperamos.
Fechar ficheiros
Depois
de aberto ou criado o ficheiro, é sempre bom
deixar a mesa arrumada após o serviço,
portanto devemos fechar o ficheiro. É muito fácil:
int fclose( int
fp );
O parâmetro fp é o ponteiro
de ficheiro que foi retornado pela função
fopen(), no nosso caso $fd. Esta função
retorna true se o ficheiro foi fechado e false se não
foi possível fechar o ficheiro. O ficheiro precisa
ser fechado no mesmo script que o abriu.
Logitech traz o G305 X Superlight ao Brasil com 130 horas de bateria
Logitech começou a vender o G305 X Superlight no mercado brasileiro em 16 de setembro. O preço sugerido ficou em R$ 449,90.






Redação iMasters





