Repository navigation
v1.1.2
新增第八个宿主:原生 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-nativejob(现共 12 条) - 文档:README 新增「原生 PHP(无框架)」接入小节,12 种语言译文同步
升级注意
无破坏性变更。原生宿主的响应不做 Range / 304(SAPI 没有这类内建行为),
大文件拖动仍按 README 走 x_accel_redirect 交给 nginx —— 与 webman 侧同一套建议。