Question

J'écris une classe qui accepte un product_id et un tableau $ _FILES comme son constructeur. La classe enregistre ces variables et les utilise pour créer un nouveau répertoire nommé par product_id et tente de copier le fichier temporaire à mon répertoire spécifié.

Pour une raison quelconque ma classe est même ne reçoivent pas aussi loin que la création d'un répertoire (qui devrait se produire dans le constructeur)

Voici un lien vers mon code: http://pastie.org/955454

Était-ce utile?

La solution

Cela pourrait être un problème d'autorisations. Vous dites qu'il est un serveur basé sur Windows? Possédez-vous cette machine? Utilisez-vous un serveur dédié? Utilisez-vous un serveur partagé?

La réponse à cette question dépend vraiment de l'information donnée par ceux-ci. Si vous possédez la machine, vous pouvez simplement aller dans le répertoire sur votre disque dur que vous voulez inscriptible et ouvrir ses autorisations à écrire. Si elle est dédiée, il y a probablement un moyen relativement facile d'accéder à la structure de fichiers et de modifier ses paramètres il d'autorisation. Si elle est partagée, même chose.

Autres conseils

Il semble que vous utilisez un chemin absolu dans ce $ this-> Répertoire dans le constructeur, en d'autres termes, il sera traité comme C: \ images \ upload (ou tout autre lecteur que vous utilisez le site de). Si vous voulez dire que cela soit un chemin de type URI, alors vous aurez besoin d'ajouter votre Webroot sur le chemin:

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

Vous pouvez également vérifier ce que mkdir () 's retour. Il est faux en cas d'échec, après quoi vous pouvez vérifier error_get_last() (PHP> = 5.2) pour voir exactement pourquoi il est défaillant.

} else {
     $ret = mkdir($this->directory, 0755, true);
     if ($ret === FALSE) {
        die("mkdir() failed with: " . error_get_last());
     }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top