İkili Paketleme
webman, projelerinizi bir ikili dosya haline getirmeyi destekler, bu sayede webman, PHP ortamına ihtiyaç duymadan Linux sistemlerinde çalışabilir.
Dikkat
Paketlenen dosyalar şu anda yalnızca x86_64 mimarisindeki Linux sistemlerinde çalıştırılabilir, Windows ve Mac sistemlerini desteklemez.
php.inidosyasındaki phar yapılandırma seçeneğini kapatmanız gerekir, yaniphar.readonly = 0olarak ayarlayın.
Komut Satırı Araçlarını Kurma
composer require webman/console
Paketleme
Aşağıdaki komutu çalıştırın
php webman build:bin
Hangi PHP sürümüyle paketleyeceğinizi de belirtebilirsiniz, örneğin
php webman build:bin 8.1
Paketledikten sonra build dizininde bir webman.bin dosyası oluşturulacaktır.
Başlatma
webman.bin dosyasını Linux sunucusuna yükleyin ve ./webman.bin start veya ./webman.bin start -d komutunu çalıştırarak başlatın.
Prensip
- Öncelikle yerel webman projesi bir phar dosyasına paketlenir.
- Sonra uzaktan
php8.x.micro.sfxdosyası indirilir. php8.x.micro.sfxve phar dosyası bir ikili dosya haline getirilir.
Dikkat Edilecek Hususlar
- Yerel PHP sürümünün ve paketleme sürümünün aynı olması şiddetle önerilir, örneğin yerel PHP 8.1 ise paketleme de PHP 8.1 ile yapılmalıdır, uyumluluk sorunlarının önlenmesi için.
- Paketleme, PHP 8'in kaynak kodunu indirecek, ancak yerelde kurulum yapmayacaktır, böylece yerel PHP ortamını etkilemeyecektir.
webman.binşu anda yalnızca x86_64 mimarisindeki Linux sistemlerinde çalıştırılabilir, Mac sistemlerinde çalıştırılamaz.- Paketlenen proje reload'u desteklemez, kod güncellemeleri için restart ile yeniden başlatılması gerekir.
- Varsayılan olarak env dosyası paketlenmez (
config/plugin/webman/console/app.phpdosyasındaki exclude_files ile kontrol edilir), bu yüzden başlatırken env dosyasınınwebman.binile aynı dizinde bulunması gerekir. - Çalışma sırasında
webman.bin'in bulunduğu dizinde runtime dizini oluşturulacak ve log dosyalarını saklayacaktır. - Şu anda
webman.bin, dış bir PHP.ini dosyasını okumayacaktır, özel bir PHP.ini dosyası gerekiyorsa,/config/plugin/webman/console/app.phpdosyasındaki custom_ini ayarını yapmanız gerekmektedir. - Bazı dosyaların paketlenmesine gerek yoksa,
config/plugin/webman/console/app.phpdosyasını ayarlayarak hariç tutabilirsiniz, bu sayede paketlenen dosyanın boyutunun aşırı büyümesi engellenir. - İkili paketleme swoole coroutine kullanımını desteklemez.
- Kullanıcı tarafından yüklenen dosyaları ikili paket içinde saklamaktan kaçının, çünkü
phar://protokolüyle kullanıcı tarafından yüklenen dosyalarla çalışmak çok tehlikelidir (phar unserialize açığı). Kullanıcı tarafından yüklenen dosyalar, paketin dışında bağımsız bir disk üzerinde saklanmalıdır. - İşletmeniz, dosyaları public dizinine yüklemeyi gerektiriyorsa, public dizinini ayrı bir yere koymalısınız ve bunu
webman.bindosyasının bulunduğu dizinde yapmalısınız, bu durumdaconfig/app.phpdosyasını aşağıdaki gibi yapılandırmanız ve yeniden paketlemeniz gerekir.'public_path' => base_path(false) . DIRECTORY_SEPARATOR . 'public',
Statik PHP'yi Ayrı İndirme
Bazen yalnızca bir PHP çalıştırılabilir dosyasına ihtiyacınız vardır, PHP ortamı kurmadan yapabilirsiniz, lütfen statik php indir bağlantısına tıklayın.
İpucu
Statik PHP'ye bir php.ini dosyası belirtmek isterseniz, aşağıdaki komutu kullanabilirsinizphp -c /your/path/php.ini start.php start -d
Desteklenen Uzantılar
Core, date, libxml, openssl, pcre, sqlite3, zlib, amqp, apcu, bcmath, calendar, ctype, curl, dba, dom, sockets, event, hash, fileinfo, filter, gd, gettext, json, iconv, SPL, session, standard, mbstring, igbinary, imagick, exif, mongodb, msgpack, mysqlnd, mysqli, pcntl, PDO, pdo_mysql, pdo_pgsql, pdo_sqlite, pdo_sqlsrv, pgsql, Phar, posix, readline, redis, Reflection, shmop, SimpleXML, soap, sodium, sqlsrv, sysvmsg, sysvsem, sysvshm, tokenizer, xlswriter, xml, xmlreader, xmlwriter, xsl, zip, memcache, Zend OPcache
Proje Kaynağı
https://github.com/crazywhalecc/static-php-cli
https://github.com/walkor/static-php-cli