J'essaie de faire en sorte que PHP déplace un fichier téléchargé du répertoire tmp vers un emplacement permanent sur mon serveur Web. Cela semble assez simple, mais je reçois cette erreur:
Unable to move 'C:\UniServer\tmp\php3F62.tmp' to 'static/images/slides/1/1.jpg'
Assez simple, non? Il ne peut pas trouver le dossier de destination.
Ma question est la suivante: Comment référencer le répertoire cible souhaité?
La référence est-elle relative à la position du script sur le serveur? Ou est-ce relatif à l'URL? Ou le PHP DOCUMENT_ROOT
? Ou le système de fichiers de l'OS? Ou autre chose?
Je ne trouve pas de réponse dans la documentation de PHP ni dans aucune des questions similaires ici sur SO ..
Quelqu'un peut-il aider? Merci.
Un moyen simple de garder trace du chemin consiste simplement à définir le chemin absolu dans votre index.php
define ('SITE_ROOT', realpath(dirname(__FILE__)));
Ensuite, utilisez-le comme ceci:
move_uploaded_file($_FILES['file']['tmp_name'], SITE_ROOT.'/static/images/slides/1/1.jpg');
J'ai eu le même problème avec mon téléchargement. Voir mon exemple et peut-être que cela peut vous aider.
Le fichier que j'ai créé s'appelle "upload".
$uploads_dir = 'uploads/';
$name = $_FILES['userfile']['name'];
if (is_uploaded_file($_FILES['userfile']['tmp_name']))
{
//in case you want to move the file in uploads directory
move_uploaded_file($_FILES['userfile']['tmp_name'], $uploads_dir.$name);
echo 'moved file to destination directory';
exit;
}
$destination = dirname(dirname(dirname(dirname(__FILE__))))."/runtime/tmp/";
chown($destination, 0755);
move_uploaded_file($info['tmp_name'], $destination.$info['name']);
Ceci est ma solution, je viens d'utiliser mkdir pour créer un répertoire pour mettre ma photo que je veux déplacer .
C'est à partir de la position du script sur le serveur! Et de plus, vous devez avoir des autorisations d'écriture dans ce dossier:
'static/images/slides/1/1.jpg'
Au lieu de cela, il vaut mieux utiliser un chemin absolu de cette façon:
'C:\UniServer\***\static\images\slides\1\1.jpg
Utilisez un chemin absolu.