Deprecated: parse_url(): Passing null to parameter #1 ($url) of type string is deprecated in /www/wwwroot/blog_qqvbc_com/usr/plugins/Access/Access_Core.php on line 339

Deprecated: parse_url(): Passing null to parameter #1 ($url) of type string is deprecated in /www/wwwroot/blog_qqvbc_com/usr/plugins/Access/Access_Core.php on line 392

Deprecated: parse_url(): Passing null to parameter #1 ($url) of type string is deprecated in /www/wwwroot/blog_qqvbc_com/usr/plugins/Access/Access_Core.php on line 394
Joyber 的博客

类文件物理存在,但Yii自动加载找不到,高级模板新建独立api应用,99%是缺少 @api 别名,Yii autoload靠别名映射,不是composer psr‑4。

根因说明

Yii2高级模板:

  • @frontend、@backend 在 common/config/bootstrap.php 预先注册别名。
  • 你手动新建的api应用,没有注册 @api 别名。
    当解析 api\controllers\TemplateController:
    Yii自动加载逻辑:@api/controllers/TemplateController.php,别名@api不存在 → 直接放弃加载,class_exists返回false,哪怕磁盘上文件真实存在。

修复步骤

1、注册@api别名(必须)

打开 common/config/bootstrap.php,追加一行:

Yii::setAlias('@api', dirname(__DIR__) . '/api');
frontend/backend就是在这里注册别名,api同样需要这里注册,不是写在api/config/main.php里面,main.php的aliases不参与引导阶段自动加载。

2、核对 api/config/main.php

return [
    'id' => 'api',
    'basePath' => dirname(__DIR__),
    // 这里命名空间严格 api\controllers
    'controllerNamespace' => 'api\controllers',
    // 这里不要写 aliases 数组做@api,此处加载时机太晚,autoload阶段还没执行
    // ...其余配置
];

3、验证调试代码,放到 api/web/index.php 最顶部

<?php
// 打印别名路径,看是否指向正确api目录
var_dump(Yii::getAlias('@api'));

$cls = 'api\controllers\TemplateController';
var_dump($cls, class_exists($cls));

// 手动拼装Yii预期的文件路径
$file = Yii::getAlias('@api/controllers/TemplateController.php');
var_dump($file, file_exists($file));

die;
  • Yii::getAlias('@api') 如果抛出异常:别名没注册,就是上面bootstrap漏写。
  • file_exists($file)=true,但是class_exists=false:确认别名生效,Yii自动加载器依然不去include该文件。

4、其他踩坑点

  1. 大小写严格:TemplateController.php文件名、类名完全一致;Linux区分大小写,Windows会掩盖问题。
  2. 控制器文件第一行 namespace api\controllers; 末尾分号不能丢。
  3. opcache缓存:修改bootstrap.php后,重启php‑fpm,清除opcache,否则旧别名常驻内存。
  4. 不要用frontend入口访问api,浏览器访问必须是 api/web/index.php。

临时快速验证(强制类映射,用来确认问题)

在api/config/main.php配置加入,写死类映射,如果访问正常,100%确认是别名/autoload问题:

return [
    // ...
    'classMap' => [
        'api\controllers\TemplateController' => '@api/controllers/TemplateController.php',
        'api\controllers\DefaultController' => '@api/controllers/DefaultController.php',
    ],
];
加上classMap之后访问正常,说明物理文件完全没问题,就是Yii自动加载阶段找不到@api别名。

排查顺序

  1. common/config/bootstrap.php 是否添加 Yii::setAlias('@api',xxx)
  2. 重启php‑fpm,清除opcache
  3. index.php调试代码看Yii::getAlias('@api')输出路径
  4. 确认访问入口是api/web/index.php,不是frontend入口
高级模板独立应用,不是靠composer psr‑4自动加载,是Yii别名机制,很多人踩这个坑,文件放对,忘记注册别名,class_exists直接false。

要将已经由 Git 跟踪的目录加入忽略,必须先从 Git 缓存中移除该目录的追踪状态,再将其写入 .gitignore 文件。执行以下三个步骤即可完成:

操作步骤清除暂存区缓存:
运行命令

 git rm -r --cached 目录名

(注意这只会从 Git 记录中移除,不会删掉你本地电脑里的真实文件夹)。

添加至忽略文件:

打开或创建根目录下的 .gitignore 文件,在里面写上你的目录名字,例如 目录名/。

提交这一改动:运行 git add .gitignore 和 git commit -m "stop tracking 目录名" 把修改保存到仓库中。

.gitignore 格式规则

基础语法

# 这是注释,#开头
# 忽略指定文件
test.log

# 忽略整个目录(末尾带 / 代表文件夹)
node_modules/

# 忽略该目录下所有文件,不忽略目录本身
dist/*

# ! 取反,不忽略(例外),必须写在被忽略规则后面
!dist/index.html

# * 通配任意字符
*.log

# ** 递归匹配多级目录
**/temp.txt     # 所有层级下的 temp.txt
**/build/       # 任意位置 build 文件夹

# ? 匹配单个字符
file?.txt

重要坑点

  1. /xxx 开头斜杠:只匹配仓库根目录,不会递归子目录
    /vendor/ 只忽略根下vendor,子文件夹vendor不会生效
  2. 已经被git追踪过的文件,写.gitignore不会自动取消跟踪,需要手动:

    git rm --cached 文件名
  3. 规则从上往下解析,后面的规则优先级更高;! 要放在屏蔽规则之后。

PHP/Yii2 最简示例模板

# 日志
*.log
runtime/
web/assets/

# IDE
.idea/
.vscode/

# 依赖
vendor/

# 环境配置
.env
config/db-local.php

# os文件
.DS_Store
Thumbs.db

生效位置

  • 仓库根目录 .gitignore 全局生效(最常用)
  • 子文件夹内也可以放 .gitignore,只对当前文件夹及下级生效。

需要我给你一份Yii2项目完整可直接复制的.gitignore吗。

Bash:删除当前目录所有内容,保留 data、.git 两个目录

先预览(务必先跑这条,核对待删除列表)

find . -maxdepth 1 ! -path . ! -path ./data ! -path ./.git

确认输出是你要删掉的文件/文件夹,再执行删除:

find . -maxdepth 1 ! -path . ! -path ./data ! -path ./.git -exec rm -rf {} +

参数说明

  • ! -path .:排除当前目录本身
  • ! -path ./data:保留data文件夹
  • ! -path ./.git:保留.git版本控制目录
  • -maxdepth 1:只操作当前层级,不会钻进data/.git内部删除内容

Windows PowerShell 版本(保留 data 与 .git)

预览:

Get-ChildItem . | Where-Object {$_.Name -notin @('data','.git')}

执行删除:

Get-ChildItem . | Where-Object {$_.Name -notin @('data','.git')} | Remove-Item -Recurse -Force
⚠️操作前建议备份,预览输出确认无误再执行删除命令。

原因

bash 的 * 通配符默认不会匹配 .开头隐藏文件(.git、.env、.gitignore),所以 mv src/* ./ 只会移普通文件,隐藏文件留在src目录里面。

千万不要写 mv src/.* ./,.*会匹配 . 和 ..,会把当前、上级目录也移动,直接炸锅。

方案1(Bash,最稳妥,推荐,composer临时目录迁移场景)

#开启dotglob,让*包含隐藏文件,不包含 . 和 ..
shopt -s dotglob
mv src/* ./
#关闭dotglob,恢复shell默认行为
shopt -u dotglob

执行完,src里面所有(含.git、.env)全部移动到当前目录。

方案2 不修改shell选项,直接写模式

mv src/* src/.[!.]* ./ 2>/dev/null

2>/dev/null 抑制“没有匹配到隐藏文件”的报错。

方案3 find(跨shell通用,脚本里优先用)

find src -mindepth 1 -maxdepth 1 -exec mv {} ./ \;

‑mindepth 1跳过src本身,所有子项(普通+隐藏)全部移动出来,zsh/bash都兼容,不会踩通配符坑。


你刚才composer场景完整实操示例

composer create-project topthink/think temp_proj
cd temp_proj
#把temp_proj里面全部内容(含.git .env)移动到上一级
shopt -s dotglob
mv * ../
shopt -u dotglob
cd ..
rm -rf temp_proj

校验是否全部迁移完成

ls -la

查看是否存在 .git .env 这类点开头文件。

重要提醒:移动前建议先 ls -la src 预览一遍,确认要移动的文件列表,避免误操作覆盖本地已有文件。

重要说明:官方没有发布现成4bit/8bit量化的XL一键整合包,网上的量化版本全部是网友第三方转换的,GitHub/HuggingFace官方只有完整FP16原版(24G)。
市面上流传的“量化整合包”基本是B站、AI社区网友打包,网盘分发,不是官方出品,下载注意甄别捆绑广告。

两种方案给8G显存显卡

方案A:不找量化包,直接用轻量LM模型(最稳,官方原生,优先试这个)

不用下24G XL‑4B全套,把语言模型换成轻量版acestep‑5Hz‑lm‑1.7B,不要4B大LM,再打开UI里的low‑vram CPU卸载,8G显卡就可以跑,音质轻微下降,不需要找第三方量化文件。

操作:

  1. 打开.env配置文件

    ACESTEP_LM_MODEL_PATH=acestep-5Hz-lm-1.7B
  2. UI勾选low‑vram,只生成30秒以内片段。
这是官方给低显存显卡的标准方案,比第三方4bit量化更稳定,不会出现爆音、崩生成。

方案B:找第三方量化权重(4‑bit/8‑bit,只有模型权重,没有完整一键整合包)

  1. HuggingFace搜索关键词:ACE‑Step‑1.5‑GGUF、acestep‑v15‑xl‑base‑gptq

    ⚠️注意:很多GGUF版本只适配llama.cpp,不能直接给你这套Windows gradio项目直接加载,下错无法使用。
  2. ModelScope魔改镜像站、GitCode HF镜像:搜索acestep‑v15‑xl‑base gptq 4bit,只能下载模型权重文件,需要手动替换到checkpoints目录,还要修改配置,环境依然要用你现在这套bat项目,不是直接双击就能跑的整合包。

方案C:网上别人打包的网盘一键包(B站评论区、AI论坛)

B站搜关键词:ACE‑Step‑1.5 8G显存 一键包,很多UP主分享夸克/百度网盘包,内置GPTQ‑4bit量化权重,整套解压直接run.bat。
⚠️风险点:

  1. 部分整合包捆绑垃圾软件,解压前杀毒扫描。
  2. 版本老旧,不会跟随官方更新bug修复。
  3. 很多所谓“4G显存跑满”标题属于夸大宣传,8G依然需要系统内存24G以上。

对你电脑的实操建议

你现在已经有完整的源码工程,优先试方案A,切换1.7B轻量LM+low‑vram,不用到处找网盘包,避免踩坑。

  • 如果1.7B模式下依然频繁OOM爆显存,再去B站找网友打包好的4bit网盘整合包。
  • 如果你的整机内存只有16G:不建议折腾ACE‑Step本地,8G显卡+16G内存跑XL无论原版还是量化,都会大量读写虚拟内存,速度极慢。

补充提醒

不要轻信标题写着“4G显存流畅跑完整歌曲”,ACE‑Step XL主干DiT模型本身体积巨大,再怎么量化,8G显卡也很难流畅生成分钟级完整歌曲,适合短片段生成。

如果你需要,我可以告诉你怎么修改.env文件切换1.7B轻量模型的完整步骤。

DiT模型四个选项区别

acestep‑v15‑base / sft / turbo / turbo‑rl,是ACE‑Step‑1.5的主干DiT模型,负责音频生成核心。

模型定位特点显存压力适合你8G显卡?
acestep‑v15‑base基础原版XL音质上限最高,细节丰富,生成速度最慢最高不推荐8G直接跑
acestep‑v15‑sft微调标准版base的对齐微调版本,稳定性更好,不容易出杂音跑调,日常做歌首选高开low‑vram勉强可跑
acestep‑v15‑turboTurbo加速版推理步数大幅减少,生成速度快2‑3倍;音质轻微下降,偶尔细节糊中等✅优先选这个
acestep‑v15‑turbo‑rlRL强化学习Turbo在turbo基础上做强化学习,节奏、节拍更准,旋律更规整;部分曲风会死板中等✅次选

直白解释

  1. acestep‑v15‑base
    音质最好,但慢、吃显存,容易出现跑调、乱旋律,适合20G以上大显存显卡做精细创作。8G尽量别选。
  2. acestep‑v15‑sft(标准日常)
    大多数人默认用这个,相比base减少怪异杂音跑调,就是显存占用依旧很高。8G显卡开low‑vram+1.7B LM才可以尝试。
  3. acestep‑v15‑turbo【你的8G显卡优先用这个】
    速度快非常多,推理步数少,显存占用降低,牺牲一点点音质。短片段生成效率高,适合本地低配显卡。
  4. acestep‑v15‑turbo‑rl
    turbo再经过强化学习训练,节拍更稳,不容易节奏错乱;代价是创作自由度下降,写一些非常规曲风(说唱、实验曲风)效果一般,流行歌曲表现不错。

给你的8G显存组合建议

DiT模型:acestep‑v15‑turbo
LM语言模型:acestep‑5Hz‑lm‑1.7B(轻量版,不要4B)
网页UI勾选:low‑vram低显存模式
生成时长:控制在15‑30秒以内,不要直接生成几分钟完整歌曲。

使用场景快速选

  • 追求最好音质,显卡≥16G:acestep‑v15‑sft
  • 8G显卡,要速度,做短视频BGM/MV配乐:acestep‑v15‑turbo
  • 做流行歌曲,希望节拍精准:acestep‑v15‑turbo‑rl
  • base:本地8G显卡不建议碰。
注意:选turbo系列之后,采样步数不需要设置很高,20‑30步就够用,不要设置50步以上,不会提升多少音质只会增加时间和显存占用。

LM语言模型三个版本区别

LM是歌词理解模型,负责读懂你的歌词、控制歌曲结构、段落、押韵。数字越大=参数越大。

模型参数显存占用特点8G显卡是否适合
acestep‑5Hz‑lm‑0.6B0.6B最低体积最小,省显存;对长歌词理解弱,容易断句错乱、歌词对不上旋律,适合极短片段✅应急用
acestep‑5Hz‑lm‑1.7B1.7B中等平衡!歌词理解够用,显存压力不大,不容易乱歌词。官方推荐低显存显卡使用✅首选,你就用这个
acestep‑5Hz‑lm‑4B4B很高原版大模型,长歌词、多段落、完整歌曲理解最强;非常吃显存,8G极易OOM爆显存❌不建议本地8G卡
Leave empty(DiT‑only mode)不加载LM显存最低只靠DiT生成旋律,完全不看输入的歌词,只会生成纯音乐伴奏,不会唱出歌词做BGM伴奏时选用

直白说明

  1. acestep‑5Hz‑lm‑4B
    就是24G全套里面自带的大语言模型。
    歌词理解最强,可以处理多段主歌副歌;但显存开销巨大,8G显卡就算开low‑vram,生成长一点片段就容易显存溢出。
  2. acestep‑5Hz‑lm‑1.7B(你的最佳选择)
    歌词、主歌副歌、流行曲风基本都能处理,只是超长多段歌词会偶尔出错。显存比4B低很多,配合turboDiT + low‑vram,8G显卡可行性最高。
  3. acestep‑5Hz‑lm‑0.6B
    仅适合10秒以内超短片段。长一点歌词经常错位、唱不对词,只在1.7B也爆显存的时候拿来兜底。
  4. DiT‑only mode(留空)
    不加载语言模型,不识别歌词输入。你填的歌词无效,只会生成纯背景音乐,适合做短视频BGM。

给你8G显卡整套最优组合

  • DiT主干:acestep‑v15‑turbo
  • Language Model:acestep‑5Hz‑lm‑1.7B
  • 勾选:low‑vram低显存模式
  • 生成时长限制:15‑30秒,采样步数20‑30步
提示:第一次选1.7B会自动下载该模型权重,大小几个G,保证网络通畅。
如果你想要纯伴奏,就把Language Model输入框留空,开启DiT‑only模式。