3 votes

problème de permission lors du téléchargement via php vers un dossier sur mon disque local

J'ai créé un dossier dans mon disque dur (c:/artwork) que j'utilise pour télécharger des fichiers via un formulaire en php, comme ceci :

<input name="file" type="file">

Le problème est que lorsque les fichiers sont téléchargés et que je vais dans le dossier et que j'essaie d'ouvrir un fichier, j'obtiens le message suivant : La galerie de photos ne peut pas ouvrir cette image car vous n'avez pas la permission d'accéder à l'emplacement du fichier.

Si je copie et colle manuellement une image dans ce même dossier, il n'y a pas de problème. Je peux ouvrir et visualiser les images parfaitement !

Je suppose qu'il doit s'agir d'un problème d'autorisation lors du téléchargement via php, mais lequel ? Comment puis-je résoudre ce problème ?

Remerciements

modifier (ajouter le code)

$destination = 'c:/public_html/discography/artwork/'; // path to the upload folder

if (is_dir($destination) && is_writable($destination)) {
    // if file already exists, ask what to do

    // upload the file  
    $ok = move_uploaded_file($_FILES['file']['tmp_name'], $destination . $_FILES['file']['name']);

    // if file uploaded, go ahead an insert record in database
    if ($ok) {
        $stmt = $conn->stmt_init(); // initialize a prepared statement

        $stmt->prepare($sql);
        $stmt->bind_param('s', $_FILES['file']['name']);
        $stmt->execute();
        $stmt->free_result(); // free the database resources for other queries

        // if success
        if ($stmt->affected_rows > 0) {
            $success = true;
        } else {
            $err_msg = $stmt->error;
        }

        $stmt->close(); // close statement  
    }

} else {
    $err_msg = "'$destination' must be a valid, writable directory!";
}

3voto

eDev Points 544

Si vous n'avez pas défini la directive "upload_tmp_dir" dans le php.ini, les fichiers sont sauvegardés dans le dossier temporaire. Dans votre cas C:\Windows\Temp si vous utilisez IIS et qu'il hérite donc de la permission de ce répertoire au lieu de c:/public_html/discography/artwork/.

Pour y remédier, vous pouvez soit modifier les permissions du répertoire Temp, soit définir un autre endroit pour stocker les fichiers tmp dans le fichier php.ini.

0voto

RobB Points 5722

Essayez d'utiliser chmod() pour modifier les autorisations de ce fichier.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X