Permissão PHP Mkdir não funciona

Escrito por steve mcdonnell Google | Traduzido por weber figueiredo
  • Compartilhar
  • Tweetar
  • Compartilhar
  • Pin
  • E-mail
Permissão PHP Mkdir não funciona
Problemas com a função PHP "mkdir" (Jupiterimages/Comstock/Getty Images)

O PHP fornece uma função chamada "mkdir", que permite a criação de um novo diretório. Um argumento opcional especifica o valor numérico das permissões atribuídas ao novo diretório. Por exemplo: "0777" permite ler, escrever e executar permissões ao "owner" (proprietário), "group" (grupo) e "other" (outro). Há alguns casos em que uma permissão atribuída à função "mkdir" não funciona. Isso se deve ao fato de que o novo diretório provavelmente não possui as mesmas permissões que foram atribuídas à função.

Outras pessoas estão lendo

Não aplicável ao Windows

A lista de permissões possíveis de se fornecer para a função "mkdir" são válidos apenas em sistemas de arquivos baseados em Linux. Isto significa que você não pode associar permissões a um diretório criado no Windows. Se você passar valores através da função "mkdir" no Windows, o PHP simplesmente irá ignorá-los.

Conta de usuário padrão

Lembre-se de que um script roda em um servidor Web a partir de um navegador executado sob a conta de usuário padrão, como o "www-data" e não sob a sua conta de usuário. Se as permissões de diretório não estiverem funcionando, é possível que você esteja testando um script em sua conta em vez da conta de usuário padrão. Para testar o script como usuário padrão, digite "su www-data" e explore as permissões de diretório atribuídas a ele.

Máscara de diretório

Se as permissões de um novo diretório são diferentes das que você passou, pode ser por causa de uma máscara de diretório aplicada às permissões. A máscara é mantida pelo servidor Web, e não pelo PHP. Para desativar esta máscara, use a função "umask" para definir a máscara em zero. Crie o diretório usando "mkdir" e altere as permissões de diretório usando a função "chmod".

Por exemplo:

<?php $save = umask(0); if (mkdir($newdir)) chmod($newdir, 0755); umask($save); ?>

Atribuição recursiva

A função "mkdir" recebe um segundo argumento opcional que cria diretórios aninhados recursivamente. Quando você atribui permissões de diretório de forma recursiva, elas podem não ser executadas na ordem correta, gerando resultados diferentes do esperado. Para garantir a ordem correta, use a função "chmod" para atribuir permissões de diretório ao novo diretório, após sua criação com a função "mkdir".

Por exemplo:

<?php if (mkdir($newdir, 0755, true)) chmod($newdir, 0755); ?>

Não perca

Filtro:
  • Geral
  • Artigos
  • Slides
  • Vídeos
Mostrar:
  • Mais relevantes
  • Mais lidos
  • Mais recentes

Nenhum artigo disponível

Nenhum slide disponível

Nenhum vídeo disponível