Já deparei com alguns casos com instalações do WordPress com Bluehost, onde encontrei erros no meu tema do WordPress porque a pasta de uploads wp-content/uploads
não estava presente.
Aparentemente, o instalador do Bluehost cPanel WordPress não cria esta pasta, embora HostGator o .
Portanto, preciso adicionar código ao meu tema que verifique a pasta e a crie de outra forma.
if (!file_exists('path/to/directory')) { mkdir('path/to/directory', 0777, true); }
Respostas:
Tente isso usando o mkdir :
Observe que
0777
já é o modo padrão para diretórios e ainda pode ser modificado pelo umask atual.fonte
file_exists
- Verifica se um arquivo ou diretório existeis_file
- Diz se o arquivo é um arquivo comumis_dir
- Diz se o arquivo é um diretórioAqui está a peça que faltava. Você precisa passar o sinalizador 'recursivo' como terceiro argumento (boolean true) na chamada mkdir desta forma:
fonte
true
Algo um pouco mais universal, pois isso aparece no google. Embora os detalhes sejam mais específicos, o título dessa pergunta é mais universal.
Isso seguirá um caminho, possivelmente com uma longa cadeia de diretórios não criados, e continuará subindo um diretório até chegar a um diretório existente. Em seguida, ele tentará criar o próximo diretório nesse diretório e continuará até que todos os diretórios sejam criados. Retorna verdadeiro se for bem-sucedido.
Pode ser aprimorado fornecendo um nível de parada para que apenas falhe se for além da pasta do usuário ou algo assim e incluindo permissões.
fonte
Que tal uma função auxiliar como esta:
Ele retornará
true
se o diretório foi criado com sucesso ou já existe, efalse
se o diretório não pôde ser criado.Uma alternativa melhor é esta (não deve dar nenhum aviso):
fonte
@
e substituí-lo por umais_dir
verificação adequada , meu voto positivo será seu :) Pontos extras para verificar se o diretório paiis_writable()
de uma função auxiliar à prova d'água.Maneira mais rápida de criar pasta:
fonte
Crie recursivamente o caminho do diretório:
Inspirado pelo Python
os.makedirs()
fonte
No WordPress, há também a função muito útil wp_mkdir_p que criará recursivamente uma estrutura de diretórios.
Fonte de referência: -
fonte
Eu preciso da mesma coisa para um site de login. Eu precisava criar um diretório com duas variáveis. O diretório $ é a pasta principal onde eu queria criar outra subpasta com o número de licença do usuário.
fonte
Esta é a solução mais atualizada sem supressão de erros:
fonte
Se você quiser evitar o problema do
file_exists
VSis_dir
, sugiro que você olhe aquiEu tentei isso e ele só cria o diretório se o diretório não existir . Não importa se existe um arquivo com esse nome.
fonte
fonte
Você pode tentar também:
fonte
Para criar uma pasta se ela ainda não existir
Considerando o ambiente da pergunta.
E citando: http://php.net/manual/en/function.mkdir.php
O manual diz que o único parâmetro necessário é o
$pathname
!então, podemos simplesmente codificar:
Explicação:
Não precisamos passar nenhum parâmetro ou verificar se existe uma pasta ou mesmo passar o parâmetro de modo, a menos que seja necessário; pelos seguintes motivos:
mode
é ignorado no Windows Hosting executando PHP .mkdir
comando já foi construído no verificador se a pasta existe; então precisamos verificar o retorno apenas True | False; e não é um erro, é apenas um aviso e o Aviso é desativado em servidores de hospedagem por padrão.Essa é apenas outra maneira de analisar a questão e não reivindicar uma solução melhor ou mais ideal.
Testado em PHP7, Servidor de produção, Linux
fonte
fonte
Devemos sempre modularizar nosso código e escrevi a mesma verificação abaixo ... Primeiro, verificamos o diretório, se o diretório estiver ausente, criamos o diretório.
fonte
Você primeiro precisa verificar se o diretório existe
file_exists('path_to_directory')
Em seguida, use
mkdir(path_to_directory)
para criar um diretórioMais sobre mkdir () aqui
Código completo aqui:
fonte
Aqui está.
fonte
A resposta aceita funciona, mas não é a solução correta devido às permissões. As permissões 0777 permitem que todos acessem / leiam / gravem o diretório. Não é isso que queremos para o diretório de upload no servidor da web. Aqui está a solução correta e completa sugerida.
0644 são as permissões corretas para o diretório de uploads porque normalmente não queremos que o upload no servidor seja executado lá.
true é o terceiro parâmetro para definir a propriedade recursiva como true ou false. Permite a criação de diretórios aninhados especificados no nome do caminho.
fonte