Como criar uma pasta se ela não existe em PHP

  1. file_exists() para verificar se um arquivo ou diretório existe em PHP
  2. is_dir() para verificar se um Arquivo ou Diretório existe em PHP
  3. file_exists() vs is_dir() em PHP
  4. mkdir() em PHP

É possível criar uma pasta e definir a permissão apropriada utilizando PHP, especificamente utilizando a função mkdir().

O modo de permissão padrão é 0777 (acesso mais amplo possível). Antes de criar um diretório, é importar para verificar primeiro se o diretório ou um arquivo existe ou não. Em PHP, isso pode ser feito utilizando file_exists ou is_dir.

file_exists() para verificar se um arquivo ou diretório existe em PHP

A função file_exists é uma função integrada para verificar onde um diretório ou um arquivo existe ou não. Ela aceita um parâmetro de um caminho que retorna true se ele já existe ou false se não existir.

Exemplo utilizando file_exists():

$path = "sample/path/newfolder";
if (!file_exists($path)) {
    mkdir($path, 0777, true);
}

No exemplo acima, ele verifica a existência do diretório utilizando a função file_exists(), depois cria o diretório newfolder se o resultado for falso, com a permissão de 0777.

is_dir() para verificar se um Arquivo ou Diretório existe em PHP

Esta função também é semelhante a file_exists, e a única diferença é que ela só retornará true se a string passada for um diretório e retornará false se for um arquivo.

Exemplo utilizando is_dir:

$path = "sample/path/newfolder";
if (!is_dir($path)) {
    mkdir($path, 0777, true);
}

No exemplo acima, is_dir verifica se a pasta já existe antes de criar uma nova pasta utilizando mkdir.

file_exists() vs is_dir() em PHP

Ambas as funções verificam a existência do diretório, a única diferença é file_exists() também retorna true se o parâmetro passado for um arquivo. Por outro lado, is_dir é um pouco mais rápido que file_exists.

mkdir() em PHP

Esta função cria um diretório que é especificado pelo nome do caminho que é passado como um parâmetro. O valor de retorno esperado é true ou false.

Exemplo de implementação:

mkdir($path, $mode, $recursive, $context);

Valores paramétricos*.

Parâmetro Valores
path (obrigatório) Diretório ou caminho para criar
mode (opcional) Permissão de diretório ou arquivo. Por padrão, o mode é 0777 (acesso mais amplo possível). - Sempre definido como 0
* - Especifica a permissão do proprietário do diretório ou arquivo.
- Especifica a permissão do grupo de usuários do proprietário
* - Especifica a permissão de todos os outros.
recursive (opcional) (true ou false)
Para criar a estrutura aninhada, o parâmetro recursivo deve ser definido como true.
context (opcional) Conjunto de parâmetros que melhoram ou modificam o comportamento do fluxo.

Nota: PHP verifica se o script de operação no diretório tem o mesmo UID(owner) no diretório quando o modo seguro está habilitado.