在 Linux 上运行 PHost 报“游戏目录不存在或无读写权限”怎么办

更新时间

先换用官方提供的 Linux/x64 构建版本。phost.de 在 2019 年 9 月 15 日的更新说明中明确提到:32 位版本通常能在 64 位 Linux 上运行,但在虚拟化或容器化环境中可能失败,并报出“The game directory does not exist or does not have read and write permissions”或“The above program returned with a value of -1”;此时改用 Linux/x64 构建即可解决。这个办法适用于你确认游戏目录本身存在、路径也没写错,却仍然报错的情况。

先判断是不是环境问题

这两个报错信息指向的不一定是目录真的缺失或权限真的不足。官方说明给出的解释是:32 位程序在 64 位 Linux 上一般能跑,但在虚拟化或容器化环境里可能出问题。所以排查顺序建议是:

  1. 确认游戏目录路径正确,且当前用户对目录有读写权限(这是基础检查,排除真正的路径或权限错误)。
  2. 如果基础检查都正常、报错依旧,且你的环境是虚拟机、容器(如 Docker)或类似的隔离环境,就按下面的方法换构建版本。

换用 Linux/x64 构建

PHost 4.1h 提供 Linux/x64 构建,来源是官网 2019 年 9 月 15 日的新闻条目。操作思路:

  • 从 phost.de 的下载入口获取 PHost 4.1h 的 Linux/x64 版本,替换原来使用的 32 位可执行文件。
  • 保持原有游戏目录、配置文件不变,用新文件重新执行原来的命令。
  • 预期结果:不再出现上述两条报错,宿主程序正常启动并处理回合。

官网没有给出该构建的具体文件名和安装命令,下载页的“File Overview”里可以核对实际文件名,不要凭猜测拼路径。

其他平台的选择

如果你的环境不是 x64 Linux,官网还记录了两类构建:

环境 可用构建 依据
Linux x64(含虚拟化/容器) PHost 4.1h Linux/x64 2019-09-15 新闻
Raspberry Pi(ARMv6) PHost 4.1g、3.5g 的 Linux/ARMv6 构建 2015-03-02 新闻
普通 32 位 Linux 常规 32 位版本通常可用 官网说明

ARMv6 构建只提到 4.1g 和 3.5g,没有提到 4.1h 的 ARM 版本,在树莓派上部署时要注意版本对应关系。

版本选择的前提

官网建议优先使用 4.x 稳定线,3.x 只用于仍在运行旧版本游戏或无法升级的情况。因此换构建时优先选 4.1h 的 x64 版本;只有你的游戏必须留在 3.x 线时,才考虑 3.5g 对应的构建。另外,4.1h 修复了 refit 命令的一个 bug,且不影响 3.x 线,这也是优先 4.x 的一个理由。

常见卡点

  • 只改了权限仍报错:如果目录权限检查通过但报错不变,问题多半在运行环境而非文件系统,直接换 x64 构建,不要在权限上反复折腾。
  • 容器内路径映射:容器化环境中宿主机目录与容器内路径不一致时,也会表现为“目录不存在”,换构建前先确认容器内看到的路径确实存在。
  • 下载错文件:官网同时提供源码、文档和多个平台的二进制,下载时以“File Overview”中的文件说明为准,避免拿到源码包却当成可执行文件。