การบีบอัดแบบไบนารี
Webman รองรับการบีบอัดโปรเจคให้เป็นไฟล์ไบนารี ซึ่งทำให้ Webman สามารถทำงานบนระบบลีนุกซ์ได้โดยไม่ต้องใช้สภาพแวดล้อม PHP
หมายเหตุ
ไฟล์ที่ถูกบีบอัดแล้วในขณะนี้รองรับการทำงานเฉพาะบนระบบลีนุกซ์ที่มีสถาปัตยกรรม x86_64 เท่านั้น ไม่รองรับในระบบ Windows และ Mac
ต้องปิดตัวเลือกการกำหนดค่าของ phar ในphp.ini
ด้วยการตั้งค่าphar.readonly = 0
การติดตั้งเครื่องมือบรรทัดคำสั่ง
composer require webman/console
การบีบอัด
เรียกใช้คำสั่ง
php webman build:bin
สามารถระบุเวอร์ชัน PHP ที่ต้องการบีบอัดได้ เช่น
php webman build:bin 8.1
หลังจากบีบอัดแล้ว จะมีไฟล์ webman.bin
ในไดเรกทอรี bulid
การเริ่มต้น
อัปโหลด webman.bin ไปยังเซิร์ฟเวอร์ลีนุกซ์ และเรียกใช้ ./webman.bin start
หรือ ./webman.bin start -d
เพื่อเริ่มต้น
หลักการ
- ก่อนอื่นจะบีบอัดโปรเจค Webman ในเครื่องท้องถิ่นเป็นไฟล์ phar
- จากนั้นดาวน์โหลด php8.x.micro.sfx ไปยังเครื่อง
- นำ php8.x.micro.sfx และไฟล์ phar มาต่อรวมเป็นไฟล์ไบนารี
ข้อควรระวัง
- แนะนำอย่างยิ่งให้เวอร์ชัน PHP ในเครื่องท้องถิ่นและเวอร์ชันที่ใช้ในการบีบอัดเหมือนกัน เช่น ถ้า PHP ในเครื่องท้องถิ่นคือ 8.1 ควรใช้ PHP เวอร์ชัน 8.1 ในการบีบอัด เพื่อหลีกเลี่ยงปัญหาความเข้ากันได้
- การบีบอัดจะดาวน์โหลดซอร์สโค้ดของ PHP8 แต่จะไม่ติดตั้งในเครื่อง จึงไม่ส่งผลกระทบต่อสภาพแวดล้อม PHP ในเครื่อง
- webman.bin ในขณะนี้รองรับการทำงานเฉพาะบนระบบลีนุกซ์ที่มีสถาปัตยกรรม x86_64 เท่านั้น ไม่รองรับการทำงานในระบบ Mac
- โปรเจคที่ถูกบีบอัดไม่รองรับการโหลดใหม่ (reload) ต้องรีสตาร์ทเพื่ออัปเดตโค้ด
- โดยค่าเริ่มต้นจะไม่บีบอัดไฟล์ env (ควบคุมโดย exclude_files ใน
config/plugin/webman/console/app.php
) ดังนั้นไฟล์ env ควรวางอยู่ในไดเรกทอรีเดียวกันกับ webman.bin ในระหว่างการเริ่มต้น - ในระหว่างการทำงานจะสร้างไดเรกทอรี runtime ในไดเรกทอรีที่ webman.bin ตั้งอยู่ เพื่อเก็บไฟล์บันทึก
- ในขณะนี้ webman.bin จะไม่อ่านไฟล์ php.ini จากภายนอก ถ้าต้องการกำหนดค่า php.ini เอง ให้ตั้งค่าในไฟล์
/config/plugin/webman/console/app.php
ในฟิลด์ custom_ini - บางไฟล์ที่ไม่จำเป็นต้องบีบอัด สามารถตั้งค่าให้ exclude ใน
config/plugin/webman/console/app.php
เพื่อลดขนาดของไฟล์ที่ถูกบีบอัด - การบีบอัดแบบไบนารีไม่รองรับการใช้ swoole coroutine
- ห้ามจัดเก็บไฟล์ที่ผู้ใช้อัปโหลดในแพ็คเกจไบนารี เพราะการดำเนินการไฟล์ที่ผู้ใช้อัปโหลดด้วยโปรโตคอล
phar://
นั้นเป็นอันตรายมาก (ช่องโหว่การทำลาย phar) ไฟล์ที่ผู้ใช้อัปโหลดต้องถูกจัดเก็บแยกต่างหากในดิสก์ภายนอก - หากธุรกิจของคุณต้องการอัปโหลดไฟล์ไปยังไดเรกทอรี public ต้องแยกไดเรกทอรี public ออกจากกันและวางไว้ในไดเรกทอรีเดียวกันกับ webman.bin ในกรณีนี้ต้องกำหนดค่า
config/app.php
ดังนี้และทำการบีบอัดใหม่'public_path' => base_path(false) . DIRECTORY_SEPARATOR . 'public',
ดาวน์โหลด PHP แบบสแตติกแยกต่างหาก
บางครั้งคุณอาจไม่ต้องการติดตั้งสภาพแวดล้อม PHP เพียงแค่ต้องการไฟล์ PHP ที่สามารถเรียกใช้ได้ คลิกที่นี่เพื่อดาวน์โหลด PHP แบบสแตติก
คำแนะนำ
หากต้องการกำหนดไฟล์ php.ini ให้กับ PHP แบบสแตติก โปรดใช้คำสั่งต่อไปนี้php -c /your/path/php.ini start.php start -d
ส่วนขยายที่รองรับ
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
แหล่งที่มาของโปรเจค
https://github.com/crazywhalecc/static-php-cli
https://github.com/walkor/static-php-cli