Skip to content

v1.1.2

Choose a tag to compare

@github-actions github-actions released this 25 Sep 14:20
· 22 commits to main since this release

新增第八个宿主:原生 PHP(无框架)。任何跑在 PHP 上的应用现在都能直接用,不必先有框架 ——
入口脚本一行 Bootstrap::handle(),路由、上传、续传、秒传、校验全部由本包按配置分发。

接入(三行)

// public/index.php(FPM / Apache / nginx+php-fpm)
require __DIR__ . '/../vendor/autoload.php';

exit(\AetherUpload\Adapter\Native\Bootstrap::handle([
    'base_path' => dirname(__DIR__),
    'config'    => require __DIR__ . '/../config/aetherupload.php',   // 省略则用包内默认值
    'redis'     => static fn () => new \Redis(),                       // 秒传需要,可选
]));
php bin/aetherupload aetherupload:groups     # 建存储目录
php bin/aetherupload aetherupload:publish    # 发布语言文件与前端 js
  • 路由不用自己写:按 route_preprocess / route_uploading / route_display / route_download 分发,未命中 404、方法不对 405 并给出 Allow
  • 中间件:配置里的 middleware_* 在这一宿主下是「无参可调用对象」,返回响应对象即短路 —— 权限不够直接 return Runtime::response()->text('forbidden', 403);
  • 内置服务器:php -S 127.0.0.1:8080 -t public public/index.php 即可
  • 请求直读 $_GET / $_POST / $_FILES(PHP 不额外过滤,内核的类型守卫照常生效),上传文件直接用 tmp_name,零拷贝
  • 每请求发一个新上下文 token:php -S 与常驻 worker 会在同一进程里连续处理请求,不会把上一个请求的语种、分组配置漏给下一个

其它变化

  • Slim 与原生 PHP 共用的三处实现搬到内核(Kernel/PhpFileTranslator、Kernel/ClientRedis、Kernel/BasePaths),控制台入口搬到 src/Console/{Application,RunnerCommand}.php;Slim 保留同名子类,行为一字未改(其端到端套件复跑 18 用例 / 95 断言全绿)
  • 测试:新增 tests/Integration/native/(真 php -S + 真 curl + 真 $_FILES,8 用例 60 断言)与 tests/SharedPortsTest(7 用例 19 断言)
  • 单元套件 237 用例 / 660 断言,PHP 8.0 与 8.4 实测全绿;CI 新增 integration-native job(现共 12 条)
  • 文档:README 新增「原生 PHP(无框架)」接入小节,12 种语言译文同步

升级注意

无破坏性变更。原生宿主的响应不做 Range / 304(SAPI 没有这类内建行为),
大文件拖动仍按 README 走 x_accel_redirect 交给 nginx —— 与 webman 侧同一套建议。