crazywhalecc / static-php-cli

Build standalone PHP binary on Linux, macOS, FreeBSD, Windows, with PHP project together, with popular extensions included.
https://static-php.dev
MIT License
1.29k stars 226 forks source link

碰到一个phar打包二进制的问题 #15

Closed he426100 closed 1 year ago

he426100 commented 1 year ago

以下代码

<?php

ini_set('display_errors', 'on');
ini_set('display_startup_errors', 'on');

error_reporting(E_ALL);

!defined('BASE_PATH') && define('BASE_PATH', __DIR__);
require BASE_PATH . '/vendor/autoload.php';

use Lib\Parallel;
use function Swoole\Coroutine\run;

run(function () {
   $parallel = new Parallel(1);
   echo 'ok';
});

打包phar正常,打包项目运行就会提示Class "Lib\Parallel" not found in phar://,必须加上对lib下文件的require

crazywhalecc commented 1 year ago

这个问题在 phpmicro 打包时候缺少 phar 补丁造成的,目前是无解的状态。你可以先尝试另一个静态 PHP 构建系统 lwmbs 构建出来的 micro 是否可用,后续 static-php-cli 也会跟进。

he426100 commented 1 year ago

这个问题在 phpmicro 打包时候缺少 phar 补丁造成的,目前是无解的状态。你可以先尝试另一个静态 PHP 构建系统 lwmbs 构建出来的 micro 是否可用,后续 static-php-cli 也会跟进。

这个问题跟 Swoole\Coroutine\run 有关,swow(lwmbs)不存在这个问题,不用run的时候不出错,局部使用run也会在打包后出问题,php app.phar是正常的

crazywhalecc commented 1 year ago

这个问题在 phpmicro 打包时候缺少 phar 补丁造成的,目前是无解的状态。你可以先尝试另一个静态 PHP 构建系统 lwmbs 构建出来的 micro 是否可用,后续 static-php-cli 也会跟进。

这个问题跟 Swoole\Coroutine\run 有关,swow(lwmbs)不存在这个问题,不用run的时候不出错,局部使用run也会在打包后出问题,php app.phar是正常的

好的。总之目前 Swoole 的静态编译支持并不完美,在 lwmbs 重构状态下编译带 swoole 的 micro 也有一些问题需要解决,但目前本人暂无时间处理。后续有时间发布重构版 static-php-cli 有望解决此问题。