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:

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á:

index.php<?php
  echo file_get_contents('directory/test.txt');
?>

Exemplo

Suponha que temos a seguinte estrutura de arquivos:

Neste caso, a tentativa de ler nosso arquivo, especificando seu nome como caminho, terminará em erro:

script/index.php<?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<?php
  echo file_get_contents('../test.txt'); // o arquivo será lido
?>

Exemplo

Suponha que temos a seguinte estrutura de arquivos:

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:

script/index.php<?php
  echo file_get_contents('../directory/test.txt');
?>

Exemplo

Suponha que temos a seguinte estrutura de arquivos:

Neste caso, precisaremos subir dois níveis:

script/test/index.php<?php
  echo file_get_contents('../../directory/test.txt');
?>

Tarefas práticas

Задание 1

Escreva um código que leia o conteúdo do arquivo de texto:

  • index.php
  • /dir1//dir2/test.txt
Задание 2

Escreva um código que leia o conteúdo do arquivo de texto:

  • /script/index.php
  • /dir1//dir2/test.txt
Задание 3

Escreva um código que leia o conteúdo do arquivo de texto:

  • /script1//script2/index.php
  • /dir/test.txt
Задание 4

Escreva um código que leia o conteúdo do arquivo de texto:

  • /script1//script2//script3/index.php
  • /dir1//dir2//dir3/test.txt