İ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, yani phar.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ın webman.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 durumda config/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 kullanabilirsiniz php -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