Bonjour,

J'ai un soucis avec mon code, en effet, j'ai mit en place une gestion d'upload de fichiers qui fonctionne très bien en local dans le test mais qui une fois en ligne sur un serveur sous debian, celui ci ne fonctionne plus.

On visualise très bien les fichiers présents dans le dossier de stockage, mais on peut pas uploader un fichier, et je ne sais pas où c'est.

Voici mes deux fichiers (c'est du pu procédurale, ça sera améliorer par la suite, l'idée c'était de dev un espace de gestion pour avoir une base que j'améliorerais dans le temps.)

stockage.php

<?php
/*
Programme par : kiki67100
le mardi 27 novembre 2007
Mis à jour et modifié par Frez69 le 08/08/2019
*/

$i = null;
$dossier = (preg_match("@^(?:personal)@i", $d))?'./stockage/'.$user_pseudo.'/':'./stockage/';
$textFile = (preg_match("@^(?:personal)@i", $d))?'dans mon éspace':'dans l\'éspace familliale';
$urlretour = (preg_match("@^(?:personal)@i", $d))?'./index.php?d=personal&p=stockage':'./index.php?p=stockage';
// $dossier = './stockage/';
$nb_fichier = 0;

if(isset($dossier)&&!empty($dossier)&&file_exists($dossier)&&is_dir($dossier))/*Verifie la variable et bien un repertoire*/
{
    $rep=$dossier;
    $rep=str_replace("//","/",$rep);
    $handle = @opendir($rep);/* Ouvre le repertoire */
    if(!$handle)
      {
        Erreur('Erreur l\'ors de l\'ouverture de '.$rep.' !');
        exit;
    }
}
$action = isset($_GET['action'])?$_GET['action']:'';
switch ($action) {
/*uploader*/
    case "uploader":
        include ('uploadfile.php');
        break;
/*renommer*/
    case "renommer":
        include ('renamefile.php');
        break;
/*telecharger*/
    case "telecharger":
        include ('telechargerfile.php');
        break;
/*supprimer*/
    case "delet":
        include ('deletfile.php');
        break;
/*par défaut*/
    default:
?>
    <div class="mt-2"></div>
        <table class="table table-striped">
            <tbody>
<?php
ob_start();
    while ($f = readdir($handle)) { //Boucle qui enumere tout les fichier d'un repertoire
         // On incrémente le compteur de 1
        $lien=str_replace(" ",'%20',$f); /*Pour les espace fichier*/
        $replien=str_replace(" ",'%20',$rep);/*idem pour les dossier*/

        if(@is_dir($rep.'/'.$f)){ /*verifie si c'est un repertoire*/
            // echo '<a href="?dir='.$replien.'/'.$lien.'"><i class="   fas fa-folder-open"></i>'.$f.'</a><br />'; 
        }elseif(@is_file($rep.'/'.$f)){/*Verifie si c'est bien un fichier*/
            $nom=strrchr($f,'.');
            $extension=substr($nom,1);
            if($extension=="txt" || $extension=="doc" || $extension=="docx"|| $extension=="pdf")
            {
                $nb_fichier++;
                $fullurl = $replien.$f;
                $modal = '<a class="files viewPdf text-info" data-toggle="modal" data-target="#viewPdfModal" data-id="'.$fullurl.'" class="viewPdf" title="Apperçu"><i class="fas fa-search-plus"></i>';
                if ($extension=="txt"){
                    $ico = '<span class="fas fa-file-alt text-info"></span>';
                }
                if ($extension==="pdf"){
                    $ico = '<span class="fas fa-file-pdf text-danger"></span>';
                }
                if ($extension==="doc" || $extension=="docx"){
                    $ico = '<span class="fas fa-file-word text-primary"></span>';
                    $modal = '<i class="fas fa-search-plus text-muted"></i>';
                }
?>
                <tr>
                    <th scope="row"><i class=""><?= $ico.' '.$extension; ?></i></th>
                    <td><a><?= $f; ?><a></td>
                    <td><?= $modal; ?></td>
                    <td><a class="text-success" href="./index.php?p=stockage&action=telecharger&fichier=<?= $f; ?>" title="Télécharger"><i class="fas fa-download"></i></td>
                    <td><a class="files text-warning renameFile" data-toggle="modal" data-target="#renameFileModal" data-id="<?= $f ?>" title="Renommer"><i class="fas fa-edit"></i></a></td>
                    <td><a class="files text-danger deletFile" data-toggle="modal" data-target="#deletFileModal" data-id="<?= $f ?>" title="Supprimer"><i class="fas fa-trash"></i></a></td>
                </tr>
<?php
            } // fin if
        }
    } // fin while

    if ($nb_fichier===0){
?>
                <tr>
                    <th class="border-bottom-danger bg-gray-200 text-gray-700 text-center" scope="row">Aucun fichier <?= $textFile ?></th>
                </tr>
<?php
    }
    $content = ob_get_clean();
    if ($nb_fichier!=0){
        $s = ($nb_fichier>1)?'fichiers':'fichier';
?>
                <tr>
                    <th class="border-bottom-primary bg-gray-200 text-gray-700 text-center" colspan="6">Il y'a <?= $nb_fichier.' '.$s ?> <?= $textFile ?>.</th>
                </tr>
<?php
    }
    echo $content;
?>
            </tbody>
        </table>
<?php
    break;
}

uploadfile.php

<?php
function check_extension($ext,$ext_aut)
{
    if(in_array($ext,$ext_aut))
    {
        return true;
    }
}
if(!empty($_FILES))
{
    // $dossier=$dossier;
    $result_ext = '';
    $result_max = '';
    $result_valid = '';
    $result_upload = '';
    $redirect = false;
    if(is_array($_FILES)) 
    {
        foreach ($_FILES['fichier']['name'] as $name => $value) 
        {
            $valid_ext = false;
            $valid_max = false;
            $valid_valid = false;
            $file = $_FILES['fichier'];
            $fichier = explode(".", $_FILES['fichier']['name'][$name]);
            $fichier_name = basename(strtolower($_FILES['fichier']['name'][$name]));
            $ext = explode(".", strtolower($_FILES['fichier']['name'][$name]));

            $SourcePath = $_FILES['fichier']['tmp_name'][$name]; 
            $TargetPath = $dossier.$fichier_name;
            $extension_name = array('pdf','doc','docx','txt');

            $valid_ext .= (check_extension($ext[1],$extension_name)) ? true : false;
            $result_ext .= (!check_extension($ext[1],$extension_name)) ? '<p class="text-danger">L\'extention du fichier " <span class="font-weight-bold text-info">'.$fichier_name.'</span> " n\'est pas valide</p>' : '';

            $valid_max .= ($file['size']>900000) ? true : false;
            $result_max .= ($file['size']>900000) ? '' : '<p class="text-danger">Le fichier " <span class="font-weight-bold text-info">'.$fichier_name.'</span> " est trop gros</p>';

            $valid_valid .= ($file['error']>0) ?  true : false;
            $result_valid .= ($file['error']>0) ? '' : '<p class="text-danger">Le fichier " <span class="font-weight-bold text-info">'.$fichier_name.'</span> " n\'est pas valide</p>';
            var_dump($file['error']);
            // exit;   ( ! ) Notice: Undefined variable: nom in C:\wamp64\www\identifiants\content\uploadfile.php on line 53

            if($valid_ext && $valid_max && $valid_valid) 
            {
                if(move_uploaded_file($SourcePath, $TargetPath)){

                    $result_upload .= '<p>Le fichier " <span class="font-weight-bold text-info">'.$fichier_name.'</span> " est bien uploadé</p>';
                    $redirect = true;
                }
                else{
                    $result_upload .= '<p>Le fichier " <span class="font-weight-bold text-info">'.$fichier_name.'</span> " n\'a pas été uploadé</p>';
                    $redirect = false;
                }
            }
        }
    }
?>
            <div class="alert alert-info" role="alert">
                <h3 class="alert-heading">Resultat des téléchargements</h3>
                <?= $result_ext ?>
                <?= $result_max ?>
                <?= $result_valid ?>
                <?= $result_upload ?>
<?php
                if ($redirect){
?>
                <hr>
                <script type="text/javascript">
                    document.write('<p class="mb-0">Redirection automatique dans 3 secondes</p>');
                    window.setTimeout("location=('<?= $urlretour; ?>');",3000);
                </script>
                <noscript>
                    <p class="mb-0">
                        <a class="alert-link" class="text-light" href="<?= $urlretour; ?>">Revenir à la lite de mes fichiers.</a>
                    </p>
                </noscript>
<?php
                }
?>
            </div>
<?php
}

else{
?>
        <form action="" method="post" enctype="multipart/form-data">
            <div class="input-group">
                <div class="custom-file">
                    <input type="file" class="custom-file-input" id="inputGroupFile" name="fichier[]" multiple="multiple" required accept=".pdf,.doc,.docx,.txt" onchange="drop();"/>
                    <label class="custom-file-label" id="fileLabel" for="inputGroupFile">Sélectionner le(s) fichier(s)</label>
                </div>
                <div class="input-group-append">
                    <button type="submit" class="btn btn-primary btn-small">Télécharger</button>
                </div>
            </div>
        </form>
<?php
}
?>

Voila, je sais pas pourquoi en local cela fonctionne, alors qu'en ligne plus rien.

Merci à vous de votre aide.

Bien cordialement.

2 réponses


Fre3z69
Auteur
Réponse acceptée

Bonjour,

Ce message est un doublon involontaire.

J'ai sur le topic : https://www.grafikart.fr/forum/topics/31637 : signalé le bug que j'ai eu à la création du message.

De ce fait, merci de signaler ce sujet au staff et que ces derniers puissent supprimer celui-ci si possible, étant un doublon.

Merci à vous.

Cordialement et encore désolé.

Salut,
Tu n'as pas de message d'erreur ?
@plus
Pierre