Resumo : neste tutorial, você aprenderá como trabalhar com diretórios usando diversas funções integradas no PHP.
Operações básicas de diretório
PHP fornece um conjunto de funções úteis que permitem trabalhar com diretórios de maneira eficaz. Para gerenciar um diretório, você precisa obter um identificador de diretório.
Para obter o identificador de diretório de um diretório, você passa o caminho do diretório para a opendir()
função da seguinte maneira:
<?php
$dh = opendir('./public');
Linguagem de código: HTML, XML ( xml )
Se ocorrer um erro ao abrir o diretório, a opendir()
função retornará false
.
Quando terminar de usar o diretório, você precisará fechar o identificador do diretório usando a closedir()
função:
<?php
closedir($dh);
Linguagem de código: HTML, XML ( xml )
Cada diretório pode conter uma lista de arquivos ou subdiretórios. Também pode conter a entrada de ponto ( .)
que representa o diretório atual e a entrada ( ..
) que representa o diretório pai.
Para obter a próxima entrada (um arquivo ou diretório) em um diretório, você passa o identificador do diretório para a readdir()
função.
Suponha que o public
diretório seja o seguinte:
.
├── css
│ └── style.css
└── js
└── app.js
Linguagem de código: CSS ( css )
O exemplo a seguir lista todos os subdiretórios no public
diretório:
<?php
$dh = opendir('./public');
if ($dh) {
while ($e = readdir($dh)) {
if ($e !== '.' && $e !== '..') {
echo $e , PHP_EOL;
}
}
}
closedir($dh);
Linguagem de código: HTML, XML ( xml )
Saída:
css
js
Observe que a readdir()
função retorna os diretórios e arquivos do diretório atual especificado pelo identificador de diretório. Não retorna recursivamente os arquivos e diretórios dos subdiretórios.
O código a seguir é funcionalmente equivalente ao exemplo acima, exceto pelo fato de usar a try...catch...finally
instrução para tratar o erro:
try {
$dh = opendir('./public');
if (!$dh) {
throw new Exception('Error openning the directory');
}
while ($e = readdir($dh)) {
if ($e !== '.' && $e !== '..') {
echo $e . '<br>';
}
}
} catch (\Throwable $e) {
echo $e->getMessage();
} finally {
if ($dh) {
closedir($dir);
}
}
Linguagem de código: PHP ( php )
Obtenha o diretório atual
Por padrão, o diretório atual é o diretório que contém o arquivo de script atualmente em execução. O diretório atual é importante porque é usado como diretório base para caminhos de arquivos relativos.
Para obter o diretório atual, você usa a getcwd()
função:
<?php
echo getcwd();
Linguagem de código: HTML, XML ( xml )
Para alterar o diretório atual para um novo, você usa a chdir()
função:
<?php
chdir('./dev');
echo getcwd();
Linguagem de código: HTML, XML ( xml )
Após chamar a chdir()
função, o diretório atual muda para ‘./dev’. E você pode verificar isso chamando a getcwd()
função.
Crie um novo diretório
Para criar um diretório, você usa a mkdir()
função passando o caminho do diretório. A mkdir()
função retorna true
se criou o diretório com sucesso ou caso false
contrário.
<?php
$dir = './public/img';
if (mkdir($dir)) {
echo ' The dir ', $dir, 'created successfully!';
}
Linguagem de código: HTML, XML ( xml )
Observe que o diretório pai public
deve existir.
Por padrão, a mkdir()
função é definida 0777
para o novo diretório. Se quiser definir uma permissão diferente, você pode passá-la para a mkdir()
função ou usar a chmod()
função. Por exemplo:
<?php
$dir = './public/assets';
mkdir($dir, 0644);
Linguagem de código: HTML, XML ( xml )
Para obter mais informações sobre como definir permissões no arquivo ou diretório, consulte o tutorial de permissões de arquivo .
Excluir um diretório
Para excluir um diretório, você usa a rmdir()
função. E você precisa ter permissões suficientes para remover o diretório.
Além disso, o diretório precisa estar vazio. Em outras palavras, não contém nenhum arquivo ou subdiretório.
O exemplo a seguir exclui o diretório assets
no public
diretório:
<?php
rmdir('./public/assets');
Linguagem de código: HTML, XML ( xml )
Verifique se um caminho é um diretório
Para verificar se um caminho é um diretório, você usa a is_dir()
função:
is_dir ( string $filename ) : bool
Linguagem de código: PHP ( php )
A is_dir()
função retorna true
se $filename
existir e for um diretório. Por exemplo:
<?php
$path = './public';
if (is_dir($path)) {
echo $path, ' is a directory.';
}
Linguagem de código: HTML, XML ( xml )
Resumo
- Use a
opendir()
função para abrir um diretório e obter o identificador do diretório e aclosedir()
função quando terminar de usar o diretório. - Use a
readdir()
função para ler as entradas em um diretório especificado por um identificador de diretório. - Use a
mkdir()
função para criar um novo diretório. - Use a
rmdir()
função para remover um diretório. - Use a
is_dir()
função para verificar se um caminho é um diretório e se esse diretório existe no sistema de arquivos.