İ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.ini
dosyasındaki phar yapılandırma seçeneğini kapatmanız gerekir, yaniphar.readonly = 0
olarak 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.sfx
dosyası indirilir. php8.x.micro.sfx
ve 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.php
dosyasındaki exclude_files ile kontrol edilir), bu yüzden başlatırken env dosyasınınwebman.bin
ile 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.php
dosyasındaki custom_ini ayarını yapmanız gerekmektedir. - Bazı dosyaların paketlenmesine gerek yoksa,
config/plugin/webman/console/app.php
dosyası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.bin
dosyasının bulunduğu dizinde yapmalısınız, bu durumdaconfig/app.php
dosyası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