IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MkFramework Discussion :

surchargé fpdf dans mkFramework


Sujet :

MkFramework

  1. #1
    Membre habitué
    Homme Profil pro
    Responsable SAV
    Inscrit en
    Mars 2010
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable SAV

    Informations forums :
    Inscription : Mars 2010
    Messages : 122
    Points : 128
    Points
    128
    Par défaut surchargé fpdf dans mkFramework
    Bonjour,
    Il y a quelques mois, j'avais utilisé cette librairie fpdf dans MkFramework, tout c'était toujours bien passé en local.
    Mais un jour, j'ai voulu faire fonctionner mon application chez mon hébergeur, et je me suis rendu compte que je n'arrivais plus à générer des pdf en ligne.
    Je charge ma librairie depuis public/index.php ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    // *** debut de mes librairies ***
    include($tIni['path']['lib'].'/../fpdf/fpdf.php');
    Et lorsque j'appelle la classe ainsi, (toujours en ligne) tout va bien.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    public function _monfpdf()
    {
            _root::setConfigVar('site.mode','prod'); // desactive la barre Debug
     
            $iFiche_id =_root::getParam("fiche_id",null) ;
            $iMachine_id =_root::getParam("machine_id",null) ;
     
     
            $pdf = new FPDF();
            $pdf->AddPage();
            $pdf->SetFont('Arial','B',16);
            $pdf->Cell(40,10,'Hello World !'.'fiche : '.$iFiche_id.' machine : '.$iMachine_id);
            $pdf->Output();
        }
    Cependant, quand je veux surcharger cette classe dans myClasses, en local tout va bien mais lorsque je suis en ligne, j'ai le message erreur survenue.
    Voici ma classe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     
    <?php
    /* ****************************************************************************
    * cette classe est utilisée pour generer une liste de tableau en pdf
    * les donnees proviennent d'une base de donnees mysql
    * Toute les classes métier qui se trouve dans ce repertoire doit commencer par
    * my_
    ******************************************************************************/
    class my_MaPagePdf extends FPDF 
    {
      var $titre ;
     
      function setTitreEnTete($titre)
      {
        $this->titre = $titre ;
      }
     
      // Pied de page
      function Footer()
      {
          // Positionnement à 1,5 cm du bas
          $this->SetY(-15);
          // Police Arial italique 8
          $this->SetFont('Arial','I',8);
          // Numéro de page
          $this->Cell(0,10,utf8_decode($this->titre).' - Page '.$this->PageNo().'/{nb}',0,0,'R');
      }
     
      // Tableau coloré
      function FancyTable($header, $tData)
      {
          // Couleurs, épaisseur du trait et police grasse
          $this->SetFillColor(255,0,0);
          $this->SetTextColor(255);
          $this->SetDrawColor(128,0,0);
          $this->SetLineWidth(.3);
          $this->SetFont('','B');
          // En-tête
          $w = array(40, 65, 35, 35, 35);
          for($i=0;$i<count($header);$i++)
              $this->Cell($w[$i],7,$header[$i],1,0,'C',true);
          $this->Ln();
          // Restauration des couleurs et de la police
          $this->SetFillColor(224,235,255);
          $this->SetTextColor(0);
          $this->SetFont('');
          // Données
          $fill = false;
     
          foreach($tData as $oRow)
          {
            $this->Cell($w[0],6,$oRow[0],'LR',0,'L',$fill);
            $this->Cell($w[1],6,$oRow[1],'LR',0,'L',$fill);
            $this->Cell($w[2],6,$oRow[2],'LR',0,'C',$fill);
            $this->Cell($w[3],6,number_format($oRow[3],0,',',' '),'LR',0,'C',$fill);
            $this->Cell($w[2],6,$oRow[4],'LR',0,'R',$fill);
            $this->Ln();
            $fill = !$fill;// changement de couleur
          }
          // Trait de terminaison
          $this->Cell(array_sum($w),0,'','T');
      }
    }
    Dans mon module de chargement je procède ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    public function _listeStockVoiture()
        {
            _root::setConfigVar('site.mode','prod'); // desactive la barre Debug
     
            $iFiche_id =_root::getParam("fiche_id",null) ;
            $iMachine_id =_root::getParam("machine_id",null) ;
     
     
            $pdf = new my_MaPagePdf('L','mm','A4') ; // cette classe se trouve dans myClasses
            $pdf->AddPage();
            $pdf->SetFont('Arial','B',16);
            $pdf->Cell(40,10,'Hello World !'.'fiche : '.$iFiche_id.' machine : '.$iMachine_id);
            $pdf->Output();
        }
    Merci

  2. #2
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 098
    Points
    19 098
    Billets dans le blog
    17
    Par défaut
    Bonjour,
    Si vous avez "une erreur est survenue", c'est que vous etes en mode "non prod" , l'erreur est donc écrite dans data/log/YYY-MM-DD...

    vous aurez surement la reponse dans ce fichier de log, peut etre un soucis de droits, ou de version de php par exemple

    Je ne connais pas votre version php locale, ni celle de votre hebergeur

  3. #3
    Membre habitué
    Homme Profil pro
    Responsable SAV
    Inscrit en
    Mars 2010
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable SAV

    Informations forums :
    Inscription : Mars 2010
    Messages : 122
    Points : 128
    Points
    128
    Par défaut
    Bonjour,

    Je n'ai pas de répertoire log dans les dossiers suivants :
    en local
    D:\xampp726\htdocs\mk41308\data\genere\testbc\data
    chez mon hébergeur
    /public_html/tempbc/data

    Dans le fichier mode.ini.php
    j'ai activé les deux modes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    [site]
    /* mode=dev */
    mode=prod
    et je ne vois pas de fichier log ni chez mon hébergeur ni en local sachant qu'en local, je n'ai pas d'erreur.

    Voici mes versions PHP
    en local : PHP Version 7.2.6
    chez l'hébergeur : PHP 7.1

    Merci

  4. #4
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 098
    Points
    19 098
    Billets dans le blog
    17
    Par défaut
    Il faudrait mettre en mode "prod"
    et dans le repertoire data de votre projet, créer un repertoire "log"" avec les droits d'ecriture pour tout le monde (data/log )

    ensuite, selon votre hebergeur je ne connais pas le niveau de log paramétré (dans le php.ini)
    mais deja ainsi vous devriez avoir dans ce repertoire data/log un fichier avec des indications

    sinon, chez votre hebergeur dans le fichier log de votre virtualhost (sur debian: data/log/apache2/myVirtualhost....conf )

  5. #5
    Membre habitué
    Homme Profil pro
    Responsable SAV
    Inscrit en
    Mars 2010
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable SAV

    Informations forums :
    Inscription : Mars 2010
    Messages : 122
    Points : 128
    Points
    128
    Par défaut
    Bonjour,

    Voici le fichier créé, par contre je ne comprends pas pourquoi on ne peut pas charger ce fichier bien présent dans le répertoire myClasses.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    include(../myClasses/MaPagePdf.php): failed to open stream: No such file or directory
    #0 /home/u236588938/public_html/tempbc/plugin/plugin_autoload.php(30): exception_error_handler(2, 'include(../myCl...', '/home/u23658893...', 30, Array)
    #1 /home/u236588938/public_html/tempbc/plugin/plugin_autoload.php(30): include()
    #2 [internal function]: plugin_autoload::autoload('my_MaPagePdf')
    #3 /home/u236588938/public_html/tempbc/module/mkFpdf/main.php(83): spl_autoload_call('my_MaPagePdf')
    #4 /home/u236588938/public_html/lib/framework/class_root.php(264): module_mkFpdf->_listeStockVoiture()
    #5 /home/u236588938/public_html/tempbc/public/index.php(53): _root->run()
    #6 {main}
     
    Detail:
    #0 /home/u236588938/public_html/tempbc/plugin/plugin_autoload.php (30) 
     exception_error_handler(  , 'include(../myClasses/MaPagePdf.php): failed to open stream: No such file or directory' , '/home/u236588938/public_html/tempbc/plugin/plugin_autoload.php' ,  , Array (     [sClass] => my_MaPagePdf     [tab] => Array         (             [0] => my             [1] => MaPagePdf         )  )  ) 
    #1 /home/u236588938/public_html/tempbc/plugin/plugin_autoload.php (30) 
     include(  ) 
    #2  plugin_autoload :: autoload( 'my_MaPagePdf' ) 
    #3 /home/u236588938/public_html/tempbc/module/mkFpdf/main.php (83) 
     spl_autoload_call( 'my_MaPagePdf' ) 
    #4 /home/u236588938/public_html/lib/framework/class_root.php (264) 
     module_mkFpdf -> _listeStockVoiture(  ) 
    #5 /home/u236588938/public_html/tempbc/public/index.php (53) 
     _root -> run(  ) 
    #6 {main}
    Merci encore de l'aide que vous m'apportez.

  6. #6
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 098
    Points
    19 098
    Billets dans le blog
    17
    Par défaut
    Bonsoir,
    Deux choses:
    1. est ce que la classe présente dans le fichier myClasses/MaPagePdf.php s'appelle bien "my_MaPagePdf" ?
    2. pouvez-vous vérifier les droits du fichier en question ? il doit etre lisible par tout le monde

  7. #7
    Membre habitué
    Homme Profil pro
    Responsable SAV
    Inscrit en
    Mars 2010
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable SAV

    Informations forums :
    Inscription : Mars 2010
    Messages : 122
    Points : 128
    Points
    128
    Par défaut
    Bonsoir,

    Pour ce soir, je vais passer à autre chose. J'ai bien vérifié les deux points [le fichier est à (0777) au niveau des permissions].
    Pour avancer un peu, j'ai mis ma classe dans le même répertoire que FPDF, et j'ai enlevé le my_ de devant, puis je l'ai chargé dans le fichier index.php
    du répertoire public.
    Mon pdf se génère ainsi sans problème, je verrai un autre moment, pourquoi, il ne se charge pas lorsque je le place dans myClasses.
    J'utiliserai une autre version du MkFramework pour voir...

    Merci beaucoup pour toute l'aide apportée

  8. #8
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 098
    Points
    19 098
    Billets dans le blog
    17
    Par défaut
    Ok pas de soucis, à dispo si besoin

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. comment utiliser fpdf dans mkframework
    Par Edja dans le forum MkFramework
    Réponses: 4
    Dernier message: 27/11/2018, 10h27
  2. [1.x] surcharger save dans model ou form?
    Par floringg dans le forum Symfony
    Réponses: 2
    Dernier message: 13/07/2012, 10h28
  3. [VB.NET] Surcharge fonction dans un module ?
    Par Jean-Philippe André dans le forum Débuter
    Réponses: 3
    Dernier message: 31/05/2012, 17h21
  4. Surcharge OnExit dans TEdit
    Par olidau dans le forum Composants VCL
    Réponses: 1
    Dernier message: 26/06/2009, 15h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo