Đóng gói nhị phân
webman hỗ trợ đóng gói dự án thành một tệp nhị phân, điều này cho phép webman có thể chạy trên hệ thống linux mà không cần môi trường php.
Lưu ý
Tệp đã đóng gói hiện chỉ hỗ trợ chạy trên hệ thống linux kiến trúc x86_64, không hỗ trợ trên hệ thống windows và mac
Cần phải tắt tùy chọn cấu hình phar trongphp.ini
, tức là thiết lậpphar.readonly = 0
Cài đặt công cụ dòng lệnh
composer require webman/console
Đóng gói
Chạy lệnh
php webman build:bin
Cũng có thể chỉ định phiên bản php nào để đóng gói, ví dụ
php webman build:bin 8.1
Sau khi đóng gói, một tệp webman.bin
sẽ được tạo trong thư mục build
Khởi động
Tải webman.bin
lên máy chủ linux, thực thi ./webman.bin start
hoặc ./webman.bin start -d
để khởi động.
Nguyên lý
- Đầu tiên, đóng gói dự án webman địa phương thành một tệp phar
- Sau đó, tải php8.x.micro.sfx từ xa xuống địa phương
- Kết hợp php8.x.micro.sfx và tệp phar thành một tệp nhị phân
Lưu ý
- Rất khuyến nghị phiên bản php địa phương và phiên bản đóng gói giống nhau, ví dụ nếu phiên bản php địa phương là php8.1, thì cũng nên sử dụng php8.1 để đóng gói, tránh gặp phải vấn đề tương thích
- Việc đóng gói sẽ tải mã nguồn php8, nhưng sẽ không cài đặt địa phương, không ảnh hưởng đến môi trường php địa phương
- webman.bin hiện chỉ hỗ trợ chạy trên hệ thống linux kiến trúc x86_64, không hỗ trợ trên hệ thống mac
- Dự án sau khi đóng gói không hỗ trợ reload, cần phải restart để cập nhật mã
- Mặc định không đóng gói tệp env (được điều khiển bởi exclude_files trong
config/plugin/webman/console/app.php
), do đó tệp env nên được đặt cùng thư mục với webman.bin khi khởi động - Trong quá trình chạy, một thư mục runtime sẽ được tạo trong thư mục chứa webman.bin, để lưu trữ tệp nhật ký
- Hiện tại, webman.bin sẽ không đọc tệp php.ini bên ngoài, nếu cần tùy chỉnh php.ini, vui lòng thiết lập trong trường custom_ini trong tệp
/config/plugin/webman/console/app.php
- Một số tệp không cần đóng gói, có thể thiết lập trong
config/plugin/webman/console/app.php
để loại bỏ, tránh tệp đã đóng gói quá lớn - Đóng gói nhị phân không hỗ trợ sử dụng coroutine swoole
- Không bao giờ lưu trữ tệp được người dùng tải lên trong gói nhị phân, vì việc thao tác tệp tải lên của người dùng bằng giao thức
phar://
là rất nguy hiểm (lỗ hổng deserialization phar). Tệp tải lên của người dùng phải được lưu trữ riêng trên đĩa bên ngoài gói. - Nếu doanh nghiệp của bạn cần tải tệp lên thư mục public, cần tách thư mục public ra đặt trong thư mục chứa webman.bin, lúc này cần cấu hình
config/app.php
như sau và đóng gói lại.'public_path' => base_path(false) . DIRECTORY_SEPARATOR . 'public',
Tải xuống PHP tĩnh riêng
Đôi khi bạn chỉ cần một tệp thực thi PHP mà không muốn triển khai môi trường PHP, vui lòng nhấn vào đây để tải xuống tải PHP tĩnh
Mẹo
Nếu bạn cần chỉ định tệp php.ini cho php tĩnh, vui lòng sử dụng lệnh sauphp -c /your/path/php.ini start.php start -d
Các mở rộng được hỗ trợ
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
Nguồn dự án
https://github.com/crazywhalecc/static-php-cli
https://github.com/walkor/static-php-cli