dongtanghuan1885 2014-09-08 13:32
浏览 100
已采纳

调用未定义的函数finfo_open()第43行

so here the code if you can help i have system taht allow admin o write article an uplod pictures ut when i crite only article and post it it's ok but when i add picture ith aticle and post it i have error Call to undefined function finfo_open() line 43

<?php 

    // RECUPERATION DES DONNEES DU FORMULAIRE
    // photo
        $newsPhotoAvant         = (isset($_POST['newsPhotoAvant']))?        formatage_from_post($_POST['newsPhotoAvant']) : '';
        $newsPhotoDelete        = (isset($_POST['newsPhotoDelete']))?       formatage_from_post($_POST['newsPhotoDelete']) : '';
        $newsPhotoLargeur       = (isset($_POST['newsPhotoLargeur']))?      formatage_from_post($_POST['newsPhotoLargeur']) : '';

    // -----------------
    // Gestion des photos supprimees
    if ($newsPhotoAvant!='' && $newsPhotoDelete=='ON')
    {
        // Suppression de l'ancienne Photo
        if(file_exists('../../'.REP_NEWS_PHOTO.$newsPhotoAvant)) {
            unlink('../../'.REP_NEWS_PHOTO.$newsPhotoAvant);
        }
        // -----------------
        // Suppression dans la base de donnees par UPDATE
        $update_query           = "UPDATE ".$NEWS_TABLE." ".
                                " SET news_photo    = '' ".
                                " WHERE news_id     = :newsId;";
      try {
        $pdo_update             = $pdo->prepare($update_query);
        $pdo_update->bindValue(':newsId',       $newsId,        PDO::PARAM_INT);
        $pdo_update->execute();
      } catch (PDOException $e) { echo 'Erreur SQL : '. $e->getMessage().'<br/>'; die(); }
        // -----------------
    }

    // ----------------------------------
    // VERIFICATION / TRAITEMENT de la photo si uploadee
    // ----------------------------------
    $msgErreurPhoto             = '';   // message d erreur
    $traiterPhotoOK             = true; // (par defaut)

    if(isset($_FILES['newsPhoto']) && $_FILES['newsPhoto']['size']>0)
    {
        // -------------------------------------
        // extension du fichier uploadé (en minuscule)
        $file_Extension         = strtolower(pathinfo($_FILES['newsPhoto']['name'],PATHINFO_EXTENSION));

        // Type MIME réel du fichier (important : évite les fichiers NON valides, dont l'extension a été renommée)
    //  $finfo                  = new finfo(FILEINFO_MIME_TYPE, NULL); // Retourne le type mime
    //  $file_MimeType          = $finfo->file($_FILES['newsPhoto']['tmp_name']);

        // (alternative, si la CLASS finfo n'est pas supportée)
        $finfo                  = finfo_open(FILEINFO_MIME_TYPE); // Retourne le type mime à la extension mimetype
        $file_MimeType          = finfo_file($finfo, $_FILES['newsPhoto']['tmp_name']);
        finfo_close($finfo);

        // -------------------------------------
        // GESTION DES ERREURS
        // -------------------------------------
        // on vérifie les RESTRICTIONS sur les fichiers
        if (UPLOAD_ERR_OK<>0 && UPLOAD_ERR_FORM_SIZE==2) {
            $msgErreurPhoto     .= 'Taille de fichier trop important ('.FILE_SIZEMAX_PHOTO.' octets)<br />';
            $traiterPhotoOK     = false;
        }
        // -----------------
        // on vérifie la TAILLE MAXI
        elseif ($_FILES['newsPhoto']['size'] > FILE_SIZEMAX_PHOTO) {
            $msgErreurPhoto     .= 'Taille de fichier supérieure à la taille maxi autorisée ('.FILE_SIZEMAX_PHOTO.' octets)<br />';
            $traiterPhotoOK     = false;
        }
        // -----------------
        // on vérifie l'EXTENSION
        elseif(!in_array($file_Extension, explode(',', constant('FILE_EXTENSION_PHOTO')))) {
            $msgErreurPhoto     .= 'L\'extension ne correspond pas (Extensions acceptées  : <b>'.constant('FILE_EXTENSION_PHOTO').'</b>)<br />';
            if(in_array($file_MimeType, explode(',', constant('FILE_MIMETYPE_PHOTO')))) {
              $msgErreurPhoto   .= '<b>Attention</b> : Ce fichier est peut-être corrompu !<br />';
              $msgErreurPhoto   .= 'L\'extension ne correspond pas au type MIME !<br />';
            }
            $traiterPhotoOK     = false;
        }
        // -----------------
        // on vérifie le TYPE MIME
        elseif(!in_array($file_MimeType, explode(',', constant('FILE_MIMETYPE_PHOTO')))) {
            $msgErreurPhoto     .= 'Le type MIME ne correspond pas (Extensions acceptées  : <b>'.constant('FILE_EXTENSION_PHOTO').'</b>)<br />';
            if(in_array($file_Extension, explode(',', constant('FILE_EXTENSION_PHOTO')))) {
              $msgErreurPhoto   .= '<b>Attention</b> : Ce fichier est peut-être corrompu !<br />';
              $msgErreurPhoto   .= 'L\'extension ne correspond pas au type MIME !<br />';
            }
            $traiterPhotoOK     = false;
        }
        // -----------------
        if ($traiterPhotoOK===false) {
            $msgErreurPhoto     = '<b>Erreur (Photo)</b> :<br />'.$msgErreurPhoto.'Impossible d\'enregistrer le fichier.';
        }
        // -------------------------------------
        // si pas d'erreur : TRAITEMENT
        // -------------------------------------
        if ($traiterPhotoOK===true)
        {
            // --------------------
            // enregistement de la PHOTO sous forme id_nom-image(.jpg, ...)
            // NB : id etant unique (auto-increment), cela rend le nom de la photo unique
            $file_Upload        = $newsId.'_'.$_FILES['newsPhoto']['name'];
            $file_Upload        = formatage_nom_fichier($file_Upload); // remplacement des caracteres speciaux + tout en minuscules
            $file_Upload        = str_replace('.jpeg','.jpg',$file_Upload); // on remplace aussi .jpeg par .jpg
            // --------------------
            // enregistrement de la photo dans le dossier
            $temp = $_FILES['newsPhoto']['tmp_name'];
            move_uploaded_file($temp, '../../'.REP_NEWS_PHOTO.$file_Upload);
            // --------------------
            // REDIMENSIONNEMENT et SAUVEGARDE de la PHOTO (si necessaire)
            // ecraser (remplacer) la photo (meme rep, meme nom)
            $redimPHOTOOK       = fctredimimage($newsPhotoLargeur,0,'','','../../'.REP_NEWS_PHOTO,$file_Upload);
            // --------------------
            // SUPPRESSION des ANCIENNES PHOTOS (si necessaire) dans le dossier
            if ($newsPhotoAvant!='' && $newsPhotoAvant!=$file_Upload)
            {
                if(file_exists('../../'.REP_NEWS_PHOTO.$newsPhotoAvant)) {
                    unlink('../../'.REP_NEWS_PHOTO.$newsPhotoAvant);
                }
            }
            // -----------------
            // enregistrement du NOM dans la base de donnees par UPDATE
            $update_query       = "UPDATE ".$NEWS_TABLE." SET ".
                                " news_photo            = :file_Upload, ".
                                " news_photo_largeur    = :newsPhotoLargeur ".
                                " WHERE news_id         = :newsId;";
          try {
            $pdo_update         = $pdo->prepare($update_query);
            $pdo_update->bindValue(':file_Upload',      $file_Upload,       PDO::PARAM_STR);
            $pdo_update->bindValue(':newsPhotoLargeur', $newsPhotoLargeur,  PDO::PARAM_STR);
            $pdo_update->bindValue(':newsId',           $newsId,            PDO::PARAM_INT);
            $pdo_update->execute();
          } catch (PDOException $e) { echo 'Erreur SQL : '. $e->getMessage().'<br/>'; die(); }
            // -----------------
        }

    } // fin TRAITEMENT PHOTO
    // ---------------------------------------------------

?>

展开全部

  • 写回答

1条回答 默认 最新

  • doulun5683 2014-09-08 13:53
    关注

    Looks like you haven't enabled the extension yet. Enable php_fileinfo.dll in your php.ini. If it doesn't work and if you're running PHP on windows, you can try installing Gnuwin.

    P.S. I strongly recommend you to update your PHP. PHP <5.4 lacks many features.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?

悬赏问题

  • ¥15 python 3.8.0版本,安装官方库ibm_db遇到问题,提示找不到ibm_db模块。如何解决?
  • ¥15 TMUXHS4412如何防止静电,
  • ¥30 Metashape软件中如何将建模后的图像中的植被与庄稼点云删除
  • ¥20 机械振动学课后习题求解答
  • ¥15 IEC61850 客户端和服务端的通讯机制
  • ¥15 MAX98357a(关键词-播放音频)
  • ¥15 Linux误删文件,请求帮助
  • ¥15 IBMP550小型机使用串口登录操作系统
  • ¥15 关于#python#的问题:现已知七自由度机器人的DH参数,利用DH参数求解机器人的逆运动学解目前使用的PSO算法
  • ¥15 发那科机器人与设备通讯配置