derdicki: GitHub Probleme Anleitung für normale User

Beitrag lesen

problematische Seite

Hallihallo!

Beispiel:
Gerade habe ich das mal runtergeladen. Müsste doch eigentlich problemlos klappen. Bin genau nach Vorlage vorgegangen:

include 'PDFMerger.php';

$pdf = new PDFMerger; // or use $pdf = new \PDFMerger; for Laravel

$pdf->addPDF('samplepdfs/one.pdf', '1, 3, 4');
$pdf->addPDF('samplepdfs/two.pdf', '1-2');
$pdf->addPDF('samplepdfs/three.pdf', 'all');


$pdf->merge('file', 'samplepdfs/TEST2.pdf'); // generate the file

$pdf->merge('download', 'samplepdfs/test.pdf'); // force download

// REPLACE 'file' WITH 'browser', 'download', 'string', or 'file' for output options 

Aber wieder einmal mehr etwas aus GitHub, was bei mir nicht funktionieren will:


Fatal error:
Uncaught Error: Class 'PDFMerger' not found in *********\PDFMerger-master\test.php:8 Stack trace: #0 {main} thrown in.…

Wieso wird die Klasse nicht gefunden, ist doch da. Muss ich bei GitHub-Files vielleicht noch was anderes beachten.

In diesem konkreten Fall liegt das Problem ganz einfach in dem heruntergeladenen Skript selber:

Die Klasse wird nicht gefunden, weil da Etwas in den Sources vom PDFMerger schief gelaufen ist: In der Datei PDFMerger.php ist ganz oben, direkt nach den Kommentaren, die Deklaration

namespace PDFMerger;

Das bedeutet, dass die Klasse, die im sample benötigt wird, nicht PDFMerger , sondern PDFMerger\PDFMerger heisst.

Deswegen wird sie nicht gefunden.

Abhilfe:

Ich habe testweise einfach mal die entsprechende Zeile in der sample.php geändert in

$pdf = new PDFMerger\PDFMerger;

Das hat erstmal insofern funktioniert, als dass der von Dir erwähnte Fatal Error nicht mehr passiert. Dafür gibt es andere Probleme im weiteren Verlauf, wenn nämlich die Klasse selber eine Exception wirft: Die wird nämlich auch nicht gefunden.

Man könnte nun den kompletten Quelltext der Klasse überarbeiten (was wahrscheinlich der sauberste Weg wäre), aber die einfachste Lösung, das Ding zum Laufen zu bekommen, ist, die namespace- Deklaration in PDFMerger.php einfach rauszulöschen.

Danach kann man dann weiter machen, indem man dem Skript dann PDF-Dateien gibt, die auch existieren. Die in sample.php angegebenen gibt es nämlich nicht.

Aber das sollte eigentlich dann kein Problem mehr sein.

Beste Grüsse, Tobias Hahner