青岛网站建设河南网站建设

北京聚立新创网络科技有限公司 2026/09/09 20:50:28

今天遇到一个特别奇怪的问题,前前后后折腾了差不多一个小时,走了不少弯路,最后发现是官方插件的 bug。把整个排查过程分享出来,希望能帮到遇到同样问题的朋友。
事情的起因是这样的。我有一个 Laravel 项目,一直用 asdf 来管理 PHP 版本。如果你不知道 asdf 是什么,简单说它就是一个通用的版本管理工具,类似于 nvm 管理 Node.js、pyenv 管理 Python,但 asdf 可以用一个工具管理几乎所有语言的版本,非常方便。

asdf install php 8.1.2

执行完这条命令后,屏幕上刷出了一堆信息,下载 PHP 源码什么的都挺正常,但最后报了两个错误:

/home/shen/.asdf/plugins/php/bin/install: line 10: get_download_file_path: command not found /home/shen/.asdf/plugins/php/bin/install: line 64: download_source: command not found


看到 command not found,我第一反应是不是 asdf 本身有问题。于是我开始了一系列「错误」的排查:首先,我尝试更新 php 插件:asdf plugin update php。结果提示已经是最新了。然后,我干脆把插件删了重装:asdf plugin remove php,再 asdf plugin add php。结果还是一样的错误。接着,我开始怀疑是不是 asdf 版本太旧了。我当时用的是 v0.14.0,于是把整个 ~/.asdf 目录删掉,重新 git clone 安装了 v0.15.0。结果呢?还是不行,同样的报错。到这里我意识到,问题可能根本不在 asdf 本身,而是出在 asdf-php 这个插件上。

于是我开始仔细排查插件的目录结构:

ls -la ~/.asdf/plugins/php/bin/

发现 bin 目录下有这么几个文件:download、exec-env、install、latest-stable、list-all、list-bin-paths。看起来都挺正常的。

但是当我去看 install 脚本的内容时,发现它调用了 get_download_file_path 和 download_source 这两个函数。问题是,这两个函数定义在 download 脚本里,而 install 脚本压根就没有 source 引入 download 脚本!这不是妥妥的 bug 吗?

为了验证我的猜测,我又看了一下插件的 git 提交历史:

cd ~/.asdf/plugins/php && git log --oneline -10

果然,最近有一个提交 e09cb20,commit message 写的是 "Move download logic to separate script and simplify install args"。翻译过来就是「把下载逻辑移到单独的脚本,简化安装参数」。
问题就出在这里!开发者把下载相关的函数移到了 download 脚本,但是 install 脚本里还在调用这些函数,却忘了引入 download 脚本。这是一个很典型的重构时遗漏的问题。

知道了原因,解决方法就很简单了——回退到这个提交之前的版本:

cd ~/.asdf/plugins/php && git checkout 1eaf4de

然后再执行 asdf install php 8.1.2,一切正常,PHP 8.1.2 顺利安装完成。


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

合肥网站建设孝感网站建设

PoE Overlay终极指南:从新手到专家的效率革命【免费下载链接】PoE-OverlayAn Overlay for Path of Exile. Built with Overwo

2026/06/30 10:48:52

塘沽网站建设网站建设网站建设

软件开发初始阶段流程与工作产物解析在软件开发过程中,初始阶段(Inception phase)是至关重要的一环,它为后续的开发工作奠定了基础,涉及多个角色、活动以及一系列的工作产物。下面将详细介绍初始

2026/06/30 13:16:35

app网站建设广州网站建设工作室

教育网站CMS系统Word导入功能开发实录——C#程序员视角一、需求拆解与前期调研作为独立外包开发者,我首先与教育机构的产品经理进行了3次需求对齐会议,明确核心痛点

2026/06/30 12:15:30

绍兴网站建设网站建设高端

EmotiVoice的多语言未来:情感与音色如何跨越语种边界?在虚拟主播用日语撒娇、游戏角色用西班牙语怒吼、有声书以法语音色娓娓道来的同时,你有没有想过——这

2026/06/30 12:38:02

怎么建设网站成都网站建设公司

一、常染色体显性多囊肾病存在怎样的临床挑战?常染色体显性多囊肾病(ADPKD)是一种最常见的遗传性肾脏疾病,全球范围内影响着超过1200万患者。

2026/06/30 12:36:02

巴中网站建设银行网站建设

基于matlab下的三维/二维元胞自动机模拟相关材料腐蚀类代码/代做。 代码共包括以下内容: 自定义设置腐蚀参数,边界条件,元胞移动方向/规则,可视化腐蚀效果

2026/06/30 13:09:34

布吉网站建设嘉兴网站建设

HuggingFace每周精选:最受欢迎的PyTorch模型榜单在深度学习领域,时间就是生产力。你有没有经历过这样的场景:好不容易找到了一个HuggingFa

2026/06/30 13:22:05

肇庆网站建设江门网站建设

AutoUnipus智能刷课工具:三步完成U校园自动化答题的终极指南【免费下载链接】AutoUnipusU校园脚本,支持全自动答题,百分百正确 2024最新版项目地址: https://

2026/06/30 13:38:36

青岛网站建设公司物流网站建设

YOLOFuse 国内镜像源推荐:突破访问壁垒,高效开展多模态目标检测在智能安防、自动驾驶和夜间巡检等前沿领域,单一视觉模态的局限性日益凸显。低光照环境下可见

2026/06/30 13:08:34