bCompiler - kompilace a ochrana PHP kódu zdarma

MyEgo.cz

home foto blogy mywindows.cz kontakt

bCompiler - kompilace a ochrana PHP kódu zdarma

PHP 16.03.07

PHP kód je ve standardní konfiguraci v jedné věci poměrně nepříjemný pro vývojářské firmy - kdokoliv má přístup k serveru, má přístup i ke zdrojovým kódům, navíc se při každém spuštění PHP skriptu všechno musí znovu a znovu kompilovat, tisíckrát denně, což drasticky snižuje výkon aplikace a zbytečně zatěžuje server.

Kompilace PHP do bytecode (podobně jako v Javě) může být kromě zrychlení aplikace použita i jako určitý (samozřejmě nikoliv stoprocentní) způsob ochrany.

Pokud si například klient chce vyzkoušet redakční systém na své síti, nahrávat mu tam desítky MB vašich zdrojových PHP kódů není zcela určitě to pravé. Kompilace do bytecode tuto situaci v praxi uspokojivě řeší, pokud tedy neexistuje pro daný kompiler volně dostupný decode proces (dekompiler).

bCompiler - zdarma dostupný kompiler PHP

Pro komerčně dostupný Zend Encoder dekompiler bohužel existuje, pro Ioncube rovněž, pro bCompiler, dodávaný v PHP licenci (tedy zdarma, navíc je zde možnost modifikace bez nutnosti zveřejnění zdrojových kódů a tím kompromitace případného uživatelského šifrování) a zdokumentovaný na webu PHP ovšem zřejmě nikoliv (Google hledání: (bcompiler decompiler, bcompiler decode).

Začal jsem bCompiler používat a jsem velice spokojen.

Výsledek je 100% kompatibilní s originálem, soubor je menší, a celá aplikace je (i při použití BZ2) podstatně rychlejší, zvláště pokud používáte rozsáhlé třídy.

Na Windows si můžete bCompiler.dll stáhnout pro různé verze PHP na pecl4win.php.net. Následně již jen povolíte v php.ini bCompiler a případně i bz2 a můžete kompilovat do bytecode:

extension=php_bcompiler.dll
extension=php_bz2.dll

bEncoder - hromadná kompilace PHP

Pro usnadnění jsem si mírně upravil skript nazvaný bEncoder. Tento skript si převezme vstupní adresář, a do výstupního adresáře zapíše zkompilované PHP skripty, případně i pakované pomocí BZ2.

Na mém PC skript běží zhruba rychlostí 2MB zkopilovaného a zpakovaného (do BZ2) PHP kódu za sekundu, takže i rozsáhlý projekt nezabere více než minutu na kompilaci do bytecode. Například ADMIN.php, v originále mající 225KB, se po kompilaci a kompresi zmenšil na 105KB.

Udělám to budoucna i měření výkonu PHP skriptů s a bez kompilace a s a bez komprese.

Upravený bEncoder skript, včetně dokumentovaného zdroje, si můžete stáhnout zde.