Caminhos relativos em PHP
Como você já sabe, no parâmetro da função file_get_contents
deve-se escrever o nome do arquivo. Isso, no entanto, funciona
apenas se o arquivo a ser lido estiver
na mesma pasta onde nosso script é executado.
Se o arquivo estiver em outro local, então no parâmetro da função é necessário escrever o caminho para esse arquivo.
Vamos ver um exemplo.
Exemplo
Suponha que temos a seguinte estrutura de arquivos:
- index.php
- /directory/
- test.txt
Vamos ler o conteúdo do arquivo de texto. Para isso, além do nome do arquivo, precisaremos especificar também a pasta onde ele está:
<?php
echo file_get_contents('directory/test.txt');
?>
Exemplo
Suponha que temos a seguinte estrutura de arquivos:
- /script/
- index.php
- test.txt
Neste caso, a tentativa de ler nosso arquivo, especificando seu nome como caminho, terminará em erro:
<?php
echo file_get_contents('test.txt'); // resultará em erro
?>
Por que o erro é gerado? O problema é que escrevemos o nome do arquivo no parâmetro da função. Isso significa que o arquivo a ser lido deve estar localizado na mesma pasta que o executável.
No entanto, nosso arquivo a ser lido está um nível acima, ou seja, na pasta que contém a pasta do script.
Nesse caso, devemos explicitamente indicar no caminho
do arquivo que este arquivo deve ser procurado um nível
acima. Para isso, antes do nome do arquivo, deve-se
escrever ../. Vamos fazer isso:
<?php
echo file_get_contents('../test.txt'); // o arquivo será lido
?>
Exemplo
Suponha que temos a seguinte estrutura de arquivos:
- /script/
- index.php
- /directory/
- test.txt
Neste caso, ao ler o arquivo, primeiro subiremos um nível e, em seguida, especificaremos o caminho para nosso arquivo em relação a esse nível:
<?php
echo file_get_contents('../directory/test.txt');
?>
Exemplo
Suponha que temos a seguinte estrutura de arquivos:
- /script/
- /test/
- index.php
- /test/
- /directory/
- test.txt
Neste caso, precisaremos subir dois níveis:
<?php
echo file_get_contents('../../directory/test.txt');
?>
Tarefas práticas
Escreva um código que leia o conteúdo do arquivo de texto:
- index.php
- /dir1/
- /dir2/
- test.txt
- /dir2/
Escreva um código que leia o conteúdo do arquivo de texto:
- /script/
- index.php
- /dir1/
- /dir2/
- test.txt
- /dir2/
Escreva um código que leia o conteúdo do arquivo de texto:
- /script1/
- /script2/
- index.php
- /script2/
- /dir/
- test.txt
Escreva um código que leia o conteúdo do arquivo de texto:
- /script1/
- /script2/
- /script3/
- index.php
- /script3/
- /script2/
- /dir1/
- /dir2/
- /dir3/
- test.txt
- /dir3/
- /dir2/