2013-10-22 20 views
9

Magento lancia un errore PHP quando sto tentando di creare fatture PDF (perché il mio client esegue PHP 5.4.19).Magento PHP 5.4 fattura PDF Errore Zend

Fatal error: Declaration of Zend_Pdf_FileParserDataSource_File::__construct() must be compatible with Zend_Pdf_FileParserDataSource::__construct() in /var/www/vhosts/website/httpdocs/includes/src/Zend_Pdf_FileParserDataSource_File.php on line 41

Normalmente è facile da risolvere il problema modificando il FileParserDataSource.php e commentando le due linee, il problema è che corrono uno Zend_Pdf_FileParserDataSource_File.php che si estende questo script (http://pastebin.com/J64VNsRP).

Esiste una soluzione disponibile in modo che sia possibile creare fatture PDF con Magento su un server con PHP 5.4?

risposta

6

Questo è il problema di zend core http://framework.zend.com/issues/browse/ZF-12093. risolvere il problema commentando __construct e __destruct metodi lib/Zend/Pdf/FileParserDataSource.php

// abstract public function __construct(); 

    /** 
    * Object destructor. Closes the data source. 
    * 
    * May also perform cleanup tasks such as deleting temporary files. 
    */ 
// abstract public function __destruct();` 
+0

Ciò non è possibile a causa del secondo file. – Hidde

+0

@Hidde, secondo file significa? –

+0

Se commento la funzione __construct(); e funzione __destruct(); in lib/Zend/Pdf/FileParseDataSource.php non ci sono cambiamenti perché FileParseDataSource.php viene esteso da Zend_Pdf_FileParserDataSource_File.php. Se commento anche il codice in quel file ottengo un "contiene 2 metodi astratti e deve quindi essere dichiarato astratto o implementare i restanti metodi" errore. – Hidde

37

Questo un problema di incompatibilità tra PHP versione 5.4.4 e Zend Framwork.

Corretto dal cambiamento in questa funzione lib/Zend/Pdf/FileParserDataSource.php.

cambiamento

abstract public function __construct(); 

a

abstract public function __construct($filePath); 
+0

Funziona come un fascino! Grazie. –

+0

questa dovrebbe essere la risposta accettata btw. – fbtb

+0

Sì, funziona! – Guus

2

A volte può essere risolve dal compilatore ricompilazione o compilatore disabilitare.
Accedere a Sistema> Strumenti> pagina Compilazione e fare clic sul pulsante Run Compilation Process o sul pulsante Disable.
Controllare ora la fattura di stampa.
http://kb.magenting.com/content/24/81/en/disable-magento-compiler.html

+0

'Esegui Compilations Process' ha svolto il lavoro dopo aver eseguito la patch php 5.4. – Timo002

1

Si dovrà cambiare la lib/Zend/Pdf/FileParserDataSource.php e lib/Zend/Pdf/FileParserDataSource/file.php

Trova il

   abstract public function __construct(); 

in FileParserDataSource. php e modificarlo in

   abstract public function __construct($filePath); 

e anche nel file.php fare lo stesso per

   public function __construct() 

convertito al

   public function __construct($filePath) 

Questo ha funzionato per me. Spero possa essere d'aiuto.