de.comp.lang.php.* FAQ

12.5. Kann ich PHP-Dateien kompilieren und so vor Dritten schützen?

Antwort von Johannes Frömter

Anders als beispielsweise bei Java wird PHP-Code erst zur Laufzeit (wenn das Script aufgerufen wird) kompiliert, d.h. der Programmcode liegt im "Klartext" in den .php-Dateien. Für normale Besucher einer von PHP erzeugten Webseite ist der Programmcode nicht einzusehen. Solange man die Scripte nur auf dem eigenen Webserver einsetzt, ist der Code für andere unsichtbar (siehe hierzu auch den Artikel 'Wie kann ein Besucher meiner Seite den PHP-Code im Browser sehen?'). Gibt man PHP-Dateien jedoch (an Kunden) weiter, erhalten diese damit den Source Code. Wenn der Code nicht "Open Source" ist, sollte man per Vertrag das Copyright und die Nutzungsbedingungen genau regeln.

Von Zend gibt es als kommerzielles Produkt den Zend Encoder Unlimited, der PHP-Code in ein binäres Format überführt und damit weitgehend vor Ausspähung, Veränderung und Re-engineering schützt. Das Produkt ist nicht gerade billig, außerdem braucht man natürlich auf jedem Webserver, der kompilierten Code ausführen soll, ein Zusatzmodul (dieses allerdings ist kostenlos).

Nach dem gleichen Prinzip funktioniert der PHP Bytecode Compiler, der im derzeitigen Beta-Stadium allerdings noch keinen objektorientierten Code verarbeiten kann. Die Kompilierung erfolgt außerdem "online", der Encoder ist (noch) nicht zum Download verfügbar.

Auch microCODE macht aus PHP-Code einen nicht lesbaren Bytecode, der durch ein einzubindendes .so-Modul vom PHP-Interpreter ausgeführt werden kann.

Einen etwas anderen Weg gehen die Tools Code Obfuscator und POBS - sie kommen ohne serverseitige Module aus, da sie den Code nur für Menschen, nicht aber für den PHP-Interpreter "unleserlich" machen. Der Code Obfuscator ersetzt die (meist sprechenden) Variablennamen durch (nichtssagende) Konstrukte, so dass es schwer ist, die Funktion eines so bearbeiteten Scripts nachzuverfolgen. POBS macht dasselbe, geht aber noch weiter, indem auch Konstanten und Funktionsnamen verändert und Kommentare, Einrückungen sowie Leerzeilen entfernt werden. Der resultierende Code ist immer noch gültiger PHP-Code, aber seine Funktionsweise ist kaum mehr zu entziffern.

Valid HTML 4.01! Valid CSS!

12.5. Kann ich PHP-Dateien kompilieren und so vor Dritten schützen?
http://www.php-faq.de/q/q-php-kompilieren.html
Archiv der de.comp.lang.php-FAQ Dies ist eine Archivseite von 2008 und wurde seitdem nicht geändert. Das dclp-FAQ-Team