Software: PHP-Composer, PDFReader installieren

Aufgabenstellung:
Manche PHP-Bibliotheken wie der PDFReader erfordern den so genannten “Composer”, der PHP-Bibliotheken nachlädt, die die zu installierende PHP-Software zusätzlich braucht. Per Terminal ist es einfach – es geht auch per Browser.

Wie das gehen kann ist hier beschrieben: Mit zwei Scripts & PHP-exec klappt das.

Composer-Idee:
Die PDFParser-Bibliothek von www.pdfparser.org nutzt als technisches Fundament TCPDF, was ein komplett eigenständiges Projekt ist. Ein Weg ist es, ein Bundle (z. B. ZIP-Datei) zu machen, in dem der komplette Code von TCPDF enthalten ist. Das ist dann ein sofort einsatzbereiter Code. Wenn aber nun eine neue und verbesserte Version von TCPDF erscheint, bekommt das der Komplettbundle nicht mit.
Genau hier setzt der Composer an: PDFParser hat eine Datei composer.json dabei, in der “tecnick.com/tcpdf”: “>=6.0.050” steht. D.h. beim Installieren von PDFParser wird die aktuelle Version von TCPDF in der Version höher als 6.0.050 installiert.

Lösung:
PHP-Composer auf dem Webserver installieren.

Details:
Im ersten Schritt muss der PHP-Composer auf dem Webserver installiert werden. Wie das geht steht bei https://getcomposer.org/download/
Wenn man Terminalzugriff auf seinen Webserver hat ist alles easy.
Wenn nicht kann man etwas tricksen:

  1. Verzeichnisstruktur auf dem Webserver anlegen, z. B.:
    pdf/ -> dort später PDFReader-PHPs
    pdf/lib/-> hier das “pdfparser-master” Verzeichnis mit dem PDFReader reinlegen
  2. Verzeichnisrechte setzen: Alle o.g. Verzeichnisse vorrübergehend beschreibbar machen, Stichwort “chmod 777”  (per FTP z. B….). Später wieder auf 755…
  3. Download Sourcecode des Composer von https://getcomposer.org/installer
  4. Im Composer-Sourcecode erste Zeile löschen: “#!/usr/bin/env php” (machen wir ja später via Webserver)
  5. Upload des Composer-Sourcecode in pdf/lib/als Datei “install-composer.php”
  6. Im Browser http://DOMAIN…irgendeinpfad/pdf/lib/install-composer.php ausführen
    Evtl. kommen ein paar Warnings, bei meiner Installation war das irrelevant.
  7. In pdf/lib/ liegt ein “composer.phar” und ein Verzeichnis .composer
  8. Done

Der zweite Schritt ist PDFParser per Webserver & PHP zu installieren:

  1. In pdf/lib/pdfparser-master/ install-pdfparser.phpx anlegen
  2. In install-pdfparser.phpx steht:
    <?php
    putenv("COMPOSER_HOME=ABSOLUTER-PFAD/pdf/lib/.composer"); 
    --> ggf. einfügen, falls COMPOSER_HOME nicht gesetzt
    
    exec("/usr/bin/php ../composer update smalot/pdfparser 2>&1", $out, $result); 
    --> das "phpx" im Dateiname macht das bei Allinkl möglich
    
    echo "Returncode: " .$result ."<br>";  
    --> ich drück die Daumen ;-)
    
    echo "Ausgabe des Scripts: " ."<br>";
    print_r($out);echo "<hr>";
    
    exec("/usr/bin/php ../composer update 2>&1", $out, $result); 
    --> Schritt 2
    echo "Returncode: " .$result ."<br>";
    echo "Ausgabe des Scripts: " ."<br>";print_r($out);
    echo "<hr>the end";
    ?>
    
  3. s.o.: “chmod 755”