PHP EXE programmá fordítása 1. - Bambalam compiler

Default book

Az alábbiakban PHP kód EXE programmá fordításáról lesz szó.

Bambalam Compiler

Tulajdonságai

  • Ez a Compiler a PHP 4.4.4 verziójú programokat fordít EXE-vé, tehát a fordítnadó programban csak au a küd használható, amelyik a PHP 4.4.4-ben használható.
  • működéséhez a Turck MMCache nevű programot használja, ami byte-kóddá alakítja a PHP forrászöveget és így hajtja végre azt. Ehhez kapcsolódik egy ismert hibája, a foreach vezérlési szerkezetet nem tudja végrehajtani, mivel az Turck MMCache sem tudja azt végrehajtani.
  • Konzol és ablakozós programokat is lehet benne írni. Az ablakozó programokat a WinBinder nevű kiterjesztéssel lehet elkészíteni.
  • A forráskódot nyílt szövegként vagy beágyazott elkódolt szövegként tudja tárolni a program. A kódot ráadásul még önkicsomagoló UPX-szel is lehet tömöríteni. Egy egyszerűbb PHP alkalmazás 600 KB-3 MB közötti méretre csökkenthető.
  • Az alapértelmezett kiterjesztések tetszőlegesen bővíthetők, amelyet a pecl.php.net-ről lehet bővíteni
  • Sebessége annyival több, mint a hagyományos PHP alkalmazásé, hogy nem kell menet közben tokenekké alakítani a kódot, mivel azt a fordítási időben megteszi a fordító.

letöltése:

http://www.bambalam.se/bamcompile/download/bamcompile1.21.zip

Használata:
   bamcompile [-options] infile.php [outfile.exe]
   bamcompile [-options] project_könyvtár mainfile.php [outfile.exe]
   bamcompile projectfile.bcp

Opciók:
    -w Hide console window for windowed applications
    -c Tömörített EXE (UPX használatával)
    -d Nem kódolja a PHP fájlokat
    -e:extension.dll További PHP kiterjesztések használata
    -i:icon.ico Ikon hozzáadása az EXE fájlhoz


Ha több fájlból áll az alkalmazás csomag
A projekt könyvtárat hozzáadva az alkalmazáshoz teljes projektkönyvtár struktúrát be tud ágyazni a program. Külön projekt fordítási parancsfájl is hazsnálható. (.bcp kiterjesztéssel)

Elérhetőek-e a beágyazott file-ok?
Bármilyen fájl keresésekor először a fájlrendszerben keresi az alkalmazás, majd ha ott nem találja, akkor keresi a programot a beágyazott fájlrendszerében.

Az INCLUDE és a REQUIRE parancsok természetesen működnek
Yes, as long as you include stuff using relative paths.

PHP 5 support nincsen benne
I haven't got around to it, but I probably will! But PHP 4.4.4 works in most cases, and the PHP 4 runtimes produces alot smaller standalone exe files than PHP 5 would do. PHP 5 is a bitch to build on windows (well, it's easy to build the standard builds, but other than that..) But as I said, just wait for it.

Az alapesetben beágyazott kiterjesztések?
Az alábbi PHp kiterjesztések default a rendszer részei:
Turck MMCache
bcmath
calendar
com
ctype
ftp
mysql
odbc
pcre
win32std
xml
zlib

Ha olyan kiterjesztést akarunk használni, amely nem a rendszer része, akkor használni kell az EXTENSION parancsot a projekt file-ban vagy az -e:php_gd2.dll parancssorban. Ha olyan kiterjesztést akarunk használni, amely további DLL-eket használ a rendszerből, akkor  azt a project könyvtárban kell elhelyezni és beágyazni a file-ba, vagy a terjesztett program mellé célszerű adni. Ilyenek például:

php_curl.dll =>libeay32.dll and ssleay32.dll
php_mssql.dll =>ntwdblib.dll
php_fribidi.dll =>fribidi.dll
php_fdf.dll => FDFTK.dll
php_ifx.dll => isqlt09a.dll
php_mhash.dll => libmhash.dll
php_msql.dll => mSQL.dll

Sok kiterjesztéshez nem kellenek további dll-ek, mint például GD, Sockets, Winbinder és Sqlite.

Hogyan adhatok ikont az alkalmazáshoz?
Az -i:icon.ico parancssori paranccsal vagy az ICON project paranccsal.

Milyen PHP.INI fájlt használ a program? Be kell ágyazni azt is?
A projekted gyökérkönyvtárába tehetsz PHP.INI-t, de a PHP kiterjesztéseket célszerű a fenti módszerrel hozzáadni, amit a PHP extension loader tölt be.Ha csak néhány ini paramétert akarsz megváltoztatni, akkor használd az ini_set() parancsot a PHP kódban (futási idő, error_log stb...)

A Bamcompile Project fájl szerkezete
A project fájl kiterjesztése .bcp. A fiájlban a parancsok külön sorban vannak. A használható parancsok:

MAINFIle (path/foprogram.php)
Bárhova kerülhet a f?program

OUTFIle Kimeneti_fájl.exe
Opcionális, alapesetben a f?program neve lesz a kimeneti fájl neve

ICON path/ikonnev.ico
Opcionális

COMPRESS
Tömöríti az eredményt UPX-szel

DONTENCODE
Nem kódolja a PHP fájlokat

WINDOWED
ablakozós alkalmazás, nem jelenik meg DOS box, különben lesz DOS box. ez nem azt jelenti, hogy kell az ablakozós alkalmazás!

EMBED alkönyvtár/file.php
EMBED teljes_alkönyvtár
EMBED alkönyvtár/*.png
Fájlok beágyazása.  egyes fájlokat, egy fájlt vagy teljes könyvtárstruktúrát be lehet ágyazni.

DESTINATION destination_path/
Sets the destination path in the embedded filesystem. Use the destination command before an embed command to change where the embedded files end up. The default destination path is, of course, the root /.

EXTENSION Elérési_útvonal/kiterjesztés.dll
PHP kiterjesztés hozzáadás a futás közben. Az indulásnál a kiterjesztés betölt?dik a memóriába.

Open source licenc

Hogyan készíthetek projekttel alkalmazást?

legyen a projekt könyvtára

C:/project_logon

Bamcompile
logon.bcp
UPX.exe
compile.bat (Ez a tartalma: bamcompile.exe logon.bcp)
logon.exe

/Logon/  - alkönyvtár

logon.php
logon.ico
php_winbinder.dll
php_fsocket.dll
stb ...
/include/  - könyvtár

lib.php
winbinder.php
wb_windows.inc.php
wb_resources.inc.php
wb_generic.inc.php

A fenti alkalmazáshoz az alábbi projectfile tartozhat:

logon.bcp

; Mainfile for application
mainfile logon.php
outfile logon.exe
icon logon/logon.ico
compress
windowed
embed logon
extension logon/php_winbinder.dll
; Do not encode PHP files
;dontencode