2010-05-11 14 views
0

J'écris une classe qui exclut un ID_produit et un tableau $ _FILES en tant que 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 dans mon répertoire spécifié.L'objet PHP Image Upload ne crée pas de répertoire sous Windows

Pour une raison quelconque ma classe est même pas devient 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

+0

Que renvoient mkdir? –

+0

A quoi ressemblent les ID, c'est-à-dire '$ prod_id'? –

+0

$ prod_id, oui; Et mkdir renvoie 0 – ThinkingInBits

Répondre

2

Cela pourrait être un problème d'autorisations . Vous dites que c'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 réellement de l'information fournie par ceux-ci. Si vous possédez la machine, vous pouvez simplement aller dans le répertoire sur votre disque dur que vous voulez écrire et ouvrir ses autorisations à écrire. S'il est dédié, il existe probablement un moyen raisonnablement simple d'accéder à la structure du fichier et de modifier ses paramètres d'autorisation. Si c'est partagé, même chose.

+0

Je vais essayer, je suis sur localhost – ThinkingInBits

+0

J'ai essayé de décocher readonly, mais il revenait à revenir quand je rouvrirais les propriétés du dossier. – ThinkingInBits

+0

Essayez de modifier les propriétés dans un compte d'administrateur. Si votre compte est déjà considéré comme un «compte admin» symbolique (ce qui, sur Windows, ne signifie pas nécessairement que vous avez un accès illimité), essayez les étapes sur cette page: http://www.howtogeek.com/howto/windows- vista/enable-le-compte-administrateur-caché-sur-windows-vista / – dclowd9901

0

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 la site de). Si vous voulez dire que ce 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 mkdir() 's retour. Il est FALSE en cas d'échec, après quoi vous pouvez vérifier error_get_last() (PHP> = 5.2) pour voir exactement pourquoi il échoue.

} else { 
    $ret = mkdir($this->directory, 0755, true); 
    if ($ret === FALSE) { 
     die("mkdir() failed with: " . error_get_last()); 
    } 
}