二进制包大于125M后运行不起来

white

已按文档说的在app/function.php首行加入ini_set('memory_limit', '512M');如下图:
截图
但是打出来运行的二进制包还是会报错
截图
跪求老大们帮忙看下

425 1 4
1个回答

北月
  1. 进入 build 目录,删除 webman.bin

  2. build 目录中新建 myini.php 文件,将以下内容写进去,然后执行 php myini.php 来生成来生成 ini

<?php
// 设置你需要的INI配置
$myini = "
memory_limit = 1024M
"
$f=fopen("myiniheader.bin", "wb");
fwrite($f, "\xfd\xf6\x69\xe6");
fwrite($f, pack("N", strlen($myini)));
fwrite($f, $myini);
fclose($f);
  1. 回到 webman 项目根目录,执行 php -d phar.readonly=0 webman build:phar 来打包生成 webman.phar 文件

  2. 再次进入 build 目录,看是否有一个 php8.2.micro.sfx 类似名字的 micro.sfx 文件,有的话直接执行 cat php8.2.micro.sfx myiniheader.bin webman.phar > webman.bin 来生成带 php.ini 头的 webman.bin 文件,再给它添加可执行权限 chmod +x webman.bin

  3. 再次执行 ./webman.bin start 来验证是否正常运行

INI 头文件相关链接:https://github.com/easysoft/phpmicro/wiki/INI-settings

  • white 2023-07-26

    按如上步骤执行后,可以了,感谢大哥~

  • 北月 2023-07-26

    已提交PR,等@walkor 大佬合并

🔝