Open ikilobyte opened 2 years ago
<?php
$ini = "swoole.use_shortname='Off'";
$resource = fopen('include-ini', 'wb');
fwrite($resource, "\xfd\xf6\x69\xe6");
fwrite($resource, pack('N', strlen($ini)));
fwrite($resource, $ini);
fclose($resource);
# hexdump include-ini
0000000 f6fd e669 0000 1a00 7773 6f6f 656c 752e
0000010 6573 735f 6f68 7472 616e 656d 273d 664f
0000020 2766
0000022
我是用的 crazywhalecc/static-php-cl
构建好的micro
phar是 hyperf/phar
工具打包的,应该不存在压缩的情况
看起来这个头没啥问题,phar是不是压缩过的我就不知道了,压缩过的phar应该只有乱码,没有这个报错
我调查一下,如果是micro的bug我修下,但如果是比较坏的情况,swoole对phar的支持有问题就比较麻烦(micro和swow对phar的支持有些魔法,不知道是不是兼容现在版本的swoole)
好的,感谢感谢
我测试了一下,自定义的ini可以被注入,从报错的信息来看好像是从phar中找不到某些类,Fatal error: Uncaught Error: Class,不知道是swoole的原因,还是phar的原因,还是hyperf的原因,,,
纯phar模式,php xxx.phar 可以正常运行 micro模式(未注入自定义ini),./xxx 无法运行,Fatal error: Uncaught Error: Class "Hyperf\Framework\Event\OnStart" not found in phar:///app/run/run/app/Command/Demo.php:42
@ikilobyte 你好,我的php项目已经打包成了phar文件,但是运行的时候需要php test.phar start
这样起服务,我直接copy /b micro.sfx + test.phar test.exe
,然后运行test.exe不行,需要怎么做才能把这个启动命令也打到二进制文件呢?我想要的结果是,直接运行test.exe就相当于执行php test.phar start
这个命令。谢谢
@ikilobyte 你好,我的php项目已经打包成了phar文件,但是运行的时候需要
php test.phar start
这样起服务,我直接copy /b micro.sfx + test.phar test.exe
,然后运行test.exe不行,需要怎么做才能把这个启动命令也打到二进制文件呢?我想要的结果是,直接运行test.exe就相当于执行php test.phar start
这个命令。谢谢
根据文档给出的规则,自定义ini生成后,和micro,ini,phar一起合并后,无法正常运行 框架:hyperf 2.2 micro:8.0.23 错误信息