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

葫芦岛市南票区紫砂工艺文化研究发展有限公司 2026/09/09 19:52:22

今天遇到一个特别奇怪的问题,前前后后折腾了差不多一个小时,走了不少弯路,最后发现是官方插件的 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 顺利安装完成。


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

邢台网站建设镇江网站建设

如何快速部署btop:终极系统监控打包指南【免费下载链接】btopA monitor of resources项目地址: https://gitcode.com/GitHub_Trend

2026/06/30 12:56:03

网站建设费用牡丹江网站建设

亚马逊云服务网络配置:从弹性块存储备份到虚拟私有云搭建1. 弹性块存储备份任务创建在进行弹性块存储相关操作时,我们可以创建一个使用快照对区域内所有卷进行备份的计划任务。具体操作步骤如下:1. 勾选“当

2026/06/30 11:11:54

北京网站建设网站建设书

计算机毕业设计springboot网络商城系统z0572au6 (配套有源码 程序 mysql数据库 论文)本套源码可以在文本联xi,先看具体系统功能演示视频领取ÿ

2026/06/30 12:52:33

宜兴网站建设网站商城建设

ViGEmBus虚拟手柄驱动终极配置指南:3分钟掌握双平台控制器模拟技术【免费下载链接】ViGEmBus项目地址: https://gitcode.com/gh_mirrors/vig/

2026/06/30 10:56:52

上海外贸网站建设廊坊网站建设

第一章:智谱清言Open-AutoGLM概述智谱清言Open-AutoGLM是基于AutoGLM技术构建的开放语言模型平台,旨在为开发者与研究者提供高效、灵活的大模型应用能

2026/06/30 10:39:21

网站建设广告南通网站建设

BMAD-METHOD揭秘:如何用AI实现规划文档到开发任务的终极自动化【免费下载链接】BMAD-METHODBreakthrough Method for Agile Ai Drive

2026/06/30 13:15:35

岳阳网站建设静安网站建设

在数字经济发展的深水区,我们正在见证一个根本性的转变:商业平台正在从简单的中介角色,进化为具有生命力的价值生态系统。这一转变不仅重新定义了商业的运作方式&#x

2026/06/30 13:50:37

机械网站建设湛江网站建设

关注+星标公众号,不错过精彩内容 来源 | 瑞萨嵌入式小百科现在应该没有人不知道 AI 了吧?AI几乎已经融入到我们生活方方面面了,随着人工智能技术不

2026/06/30 13:18:35

贵阳网站建设丹阳网站建设

用好screen,告别断连烦恼:Linux终端会话管理实战精讲你有没有过这样的经历?深夜在远程服务器上编译一个大型项目,眼看着进度条快走完了&#

2026/06/30 10:33:51

网站怎么建设建设建设网站的

摘要:随着高校毕业生数量的增加以及就业市场的动态变化,高效、精准的就业信息管理成为提升就业服务质量的关键。本文阐述基于VUE框架构建就业信息管理网站,旨在整合

2026/06/30 13:14:34