PAYATHON 2026

phpDocumentor.phar 为什么会尝试在归档内部创建目录?

数据小许

结论

错误日志显示,失败发生在 phpDocumentor 尝试于 PHAR 归档内创建 data/templates 目录时。目标路径以 phar:// 开头,随后程序报出 no phar archive specified。这表明执行流程将模板目录解析成了归档内路径,并试图像创建普通磁盘目录那样创建它。

-t 用来指定生成文档的目标目录,不会把 data/templates 自动设为输出目录。因此,错误指向模板路径,不代表 -t 参数被改写。

先核对命令和路径

在 Windows 命令行中,路径包含空格时要加引号。请将方括号占位符替换为实际路径,不要把方括号本身作为参数传入:

php phpDocumentor.phar run -d "D:\Users\Allen\Documents\Websites\My Webs\littlepanda\www\littlepanda\OfficeTools" -t "D:\Users\Allen\Documents\Websites\My Webs\littlepanda\www\littlepanda\office-tools-doc"

确认输出目录的父目录已经存在,而且当前用户有权限在其中写入文件。如果原命令中的路径只是说明用的占位符,就不必照抄;如果实际路径包含空格,则要保留引号。

再检查 PHAR 的版本和模板配置

日志显示,程序扫描源文件后进入了生成阶段,之后在解析模板目录时失败。可以先查看这个 PHAR 提供的版本和命令选项:

php phpDocumentor.phar --version
php phpDocumentor.phar --help

不同版本的命令形式和模板配置可能不同。请根据帮助信息确认当前版本是否支持 run 子命令,以及 -t 是否用于指定目标目录;同时检查项目配置中是否设置了模板路径。如果模板路径配置为归档内的 phar://.../data/templates,应按该版本支持的方式使用随包模板,或将模板放在可写的普通目录中再进行配置。phar:// 路径不能作为可写目录使用。

如果命令和配置都符合当前版本的用法,程序仍然尝试对 phar:// 路径调用 mkdir(),就需要进一步核对所用 PHAR 包是否与当前 PHP 环境兼容。仅凭这段日志,无法确定是哪项设置导致模板路径被当作可创建目录。可以重新获取该版本的 PHAR 安装包,并用相同命令和配置复现问题。

注意事项

日志中的 ../../data/templates 是相对于 PHAR 内部位置的路径片段,不能据此判断程序要把生成结果写入 src 目录。问题出在模板目录处理阶段;-t 指定的输出目录是另一项配置。

备注:内容仅供参考。