O objeto PHP Image Upload não cria diretório no Windows
-
26-09-2019 - |
Pergunta
Estou escrevendo uma classe que aceita um array product_id e $_FILES como construtor.A classe salva essas variáveis e as usa para criar um novo diretório nomeado por product_id e tenta copiar o arquivo temporário para meu diretório especificado.
Por alguma razão, minha classe nem chega a criar um diretório (o que deve acontecer no construtor)
Aqui está um link para o meu código: http://pastie.org/955454
Solução
Isso pode ser um problema de permissões.Você diz que é um servidor baseado em Windows?Você possui esta máquina?Você está usando um servidor dedicado?Você está usando um servidor compartilhado?
A resposta a esta pergunta depende realmente das informações fornecidas por eles.Se você possui a máquina, você pode simplesmente ir para o diretório em seu disco rígido que deseja gravar e abrir suas permissões para gravação.Se for dedicado, provavelmente existe um meio razoavelmente fácil de acessar a estrutura do arquivo e alterar suas configurações de permissão.Se for compartilhado, a mesma coisa.
Outras dicas
Parece que você está usando um caminho absoluto neste diretório $this->no construtor, em outras palavras, ele será tratado como C:\images\upload (ou qualquer unidade a partir da qual você está executando o site).Se você deseja que este seja um caminho do tipo URI, precisará adicionar seu webroot ao caminho:
$this->directory = $_SERVER['DOCUMENT_ROOT'] . '/images/upload/' . $this->prod_id
Você também pode querer verificar o que mkdir() está retornando.É FALSO em caso de falha, após o qual você pode verificar error_get_last()
(PHP >= 5.2) para ver exatamente por que está falhando.
} else {
$ret = mkdir($this->directory, 0755, true);
if ($ret === FALSE) {
die("mkdir() failed with: " . error_get_last());
}
}