Domanda

Sto scrivendo una classe che accetta un product_id e un array $ _FILES come del costruttore. La classe salva queste variabili e li utilizza per creare una nuova directory chiamata da product_id e tenta di copiare il file temporaneo alla mia directory specificata.

Per qualche ragione la mia classe non è nemmeno sempre per quanto riguarda la creazione di una directory (che dovrebbe avvenire nel costruttore)

Ecco un link al mio codice: http://pastie.org/955454

È stato utile?

Soluzione

Questo potrebbe essere un problema di autorizzazioni. Lei dice che è un server basato su Windows? Possiedi un macchina? Si sta utilizzando un server dedicato? Si sta utilizzando un server condiviso?

La risposta a questa domanda dipende molto sulle informazioni fornite da chi. Se si possiede la macchina, si può semplicemente andare alla directory sul disco rigido che si desidera scrivibile e aprire le sue autorizzazioni per essere scritti. Se è dedicata, c'è probabilmente un mezzo ragionevolmente facile di accesso della struttura del file e modificarne le impostazioni di autorizzazione lì. Se è condivisa, la stessa cosa.

Altri suggerimenti

Sembra che si sta utilizzando un percorso assoluto in questo $ this-> directory nel costruttore, in altre parole, sarà trattata come C: \ Immagini \ upload (o qualsiasi unità che si sta eseguendo il sito a partire dal). Se vuoi dire che questo è un tracciato di testo URI, allora avrete bisogno aggiungere la Webroot al percorso:

$this->directory = $_SERVER['DOCUMENT_ROOT'] . '/images/upload/' . $this->prod_id

Si può anche voler controllare ciò mkdir () 's ritorno. È falso in caso di fallimento, dopo la quale si poteva controllare error_get_last() (PHP> = 5.2) per vedere esattamente perché è mancato.

} else {
     $ret = mkdir($this->directory, 0755, true);
     if ($ret === FALSE) {
        die("mkdir() failed with: " . error_get_last());
     }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top