2010-08-11 3 views
1

Le même script fonctionne correctement dans localhost mais ne fonctionne pas dans le serveur. Il jette une ERROR-Impossible de télécharger l'image en php, Autorisation refusée?

Warning: copy(album/6349416.jpg) [function.copy]: failed to open stream: Permission denied in D:\Hosting\6448289\html\upload.php on line 112 

112 ligne correspondant est-

$image_name=$unq.'.'.$extension; 
//the new name will be containing the full path where will be stored (album folder) 
$newname="album/".$image_name; 
$copied = copy($_FILES['image']['tmp_name'], $newname); //112th line 
+0

est-il une raison pour laquelle vous utilisez la copie au lieu de move_uploaded_file? – teemitzitrone

Répondre

1

newname $ devrait être le chemin complet vers un nouveau fichier. Mais dans votre script c'est un chemin relatif qui semble pointer quelque part à l'intérieur/tmp

+0

Je pense que $ newname pointera vers le dossier actuel du script en cours d'exécution .. –

+0

signifie qu'il devrait être comme - 'http: // domain.com/album /' – nectar

+0

Non, il devrait être comme/home/mysite/www/upload/album. Vous pouvez utiliser dirname (__ FILE__) pour obtenir le nom du répertoire du script PHP actuel. –

0

Vérifiez les permissions du dossier de l'album. Il devrait se terminer par 6 ou 7 (lire + écrire doivent être activés pour tout le monde-permissions)

+0

J'ai vérifié toutes les permissions. – nectar

+0

Ce fichier existe-t-il déjà? Il ne suffit pas d'avoir des permissions d'écriture sur le répertoire. Si vous remplacez un fichier existant, vous devez également avoir une autorisation en écriture pour le fichier. –

0

Cela peut être une question stupide, mais utilisez-vous un serveur Windows?

Vous avez utilisé une barre oblique (de type unix) dans "album/".$image_name mais l'emplacement de l'erreur est affiché avec des barres obliques inverses (style de fenêtres) "D: \ Hosting \ 6448289 \ html \ upload.php". Est-ce qu'il échoue toujours avec un antislash, c'est-à-dire "album\".$image_name?

modifier: J'ai oublié d'ajouter - vous pourriez avoir besoin d'un ./ ou .\ à l'avant de l'emplacement de la déclarer par rapport à l'emplacement actuel du script php

+0

PHP convertira/séparera \ sur les systèmes Windows automatiquement. '' album \ ". $ image_name' provoquerait une erreur de syntaxe de toute façon, car le \ va échapper le guillemet et conduire à une chaîne non terminée. "" album \\ ". $ image_name' fonctionnerait, cependant. –

Questions connexes