حزم ثنائية

يدعم webman حزم المشروع في ملف ثنائي، مما يجعل webman قادرًا على التشغيل على نظام Linux دون الحاجة إلى بيئة PHP.

ملاحظة
الملفات المعبأة حاليًا تدعم التشغيل فقط على أنظمة Linux المعمارية 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 إلى خادم Linux، ثم نفذ ./webman.bin start أو ./webman.bin start -d ليبدأ التشغيل.

المبدأ

  • أولاً، يتم حزم مشروع webman المحلي في ملف phar.
  • ثم يتم تنزيل php8.x.micro.sfx عن بعد إلى المحلية.
  • يتم دمج php8.x.micro.sfx وملف phar في ملف ثنائي.

نقاط مهمة

  • يُنصح بشدة أن يتطابق إصدار PHP المحلي مع إصدار الحزم، على سبيل المثال إذا كان المحلي هو php8.1، يجب أن يكون الحزم أيضًا php8.1، لتجنب مشاكل التوافق.
  • عملية الحزم ستقوم بتنزيل كود المصدر لـ PHP 8، لكنها لن تثبته محليًا، وبالتالي لن تؤثر على بيئة PHP المحلية.
  • يتم تشغيل webman.bin حاليًا على أنظمة Linux المعمارية x86_64 فقط، ولا يدعم التشغيل على نظام Mac.
  • المشاريع المعبأة لا تدعم إعادة التحميل، يتعين إعادة تشغيل الخدمة لتحديث الكود.
  • بشكل افتراضي، لا يتم حزم ملفات env (config/plugin/webman/console/app.php يتحكم في exclude_files)، لذا يجب وضع ملف env في نفس دليل webman.bin عند بدء التشغيل.
  • أثناء التشغيل، سيتم إنشاء دليل runtime في نفس مسار webman.bin لتخزين ملفات السجل.
  • حاليًا، webman.bin لا يقوم بقراءة ملف php.ini الخارجي، إذا كنت بحاجة إلى custom php.ini، يرجى إعداده في ملف /config/plugin/webman/console/app.php في custom_ini.
  • بعض الملفات لا تحتاج إلى الحزم، يمكنك إعداد استبعادها في config/plugin/webman/console/app.php، لتجنب زيادة حجم الملف المعبأ بشكل مفرط.
  • الحزم الثنائية لا تدعم استخدام تعاون swoole.
  • يجب عدم تخزين ملفات المستخدم المرفوعة داخل الحزمة الثنائية، لأن التعامل مع ملفات المستخدم المرفوعة باستخدام بروتوكول 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