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

Foi útil?

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());
     }
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top