phpenv仅管理PHP版本切换,不部署FileRun;需手动安装指定PHP版本并启用gd、mbstring等扩展,再配置Web服务器(如Nginx/Apache)明确指向phpenv安装的PHP二进制或FPM实例,否则FileRun将无法正常运行。

phpenv 本身不负责部署 FileRun,它只管 PHP 版本切换。FileRun 是一个独立的 PHP Web 应用,需手动部署在 phpenv 管理的 PHP 环境之上。直接跑 phpenv install filerun 会报错 —— 因为 phpenv 没有这个命令,也不提供应用级安装能力。
phpenv 安装后如何让 FileRun 正常运行
FileRun 对 PHP 有明确要求:PHP 7.4+(推荐 8.1+),且必须启用 gd、mbstring、curl、xml、zip、exif、opcache 等扩展。这些不是 phpenv install 自动搞定的,得你手动确认或编译时启用。
- 安装前先检查目标 PHP 版本是否带全扩展:
phpenv install 8.2.18
这条命令只会下载并编译 PHP,但不会自动装扩展;若系统缺依赖(如libjpeg-dev、libpng-dev),gd就编译失败,后续 FileRun 图片预览直接报错。 - 安装完必须执行
phpenv rehash,否则php命令仍可能指向系统旧版本。 - 切换到目标版本后,用
php -m | grep -E "gd|mbstring|zip"实时验证扩展是否加载成功。
FileRun 部署路径与 phpenv 的协同要点
FileRun 是纯 PHP 文件,解压即用,但它的运行依赖 Web 服务器(如 Apache/Nginx)和 phpenv 提供的 CLI + FPM(如需)环境。关键点在于:Web 服务不能调用系统默认 PHP,必须显式指向 phpenv 管理的版本。
- Apache 用户:修改
httpd.conf或虚拟主机配置,用LoadModule php_module加载对应 PHP 版本的libphp.so(路径类似~/.phpenv/versions/8.2.18/lib/httpd/modules/libphp.so),而非系统路径。 - Nginx + PHP-FPM 用户:启动 FPM 时必须指定
phpenv版本:phpenv shell 8.2.18 php-fpm -y ~/.phpenv/versions/8.2.18/etc/php-fpm.conf
然后 Nginx 的fastcgi_pass指向该 FPM socket。 - 忘记这步?浏览器打开 FileRun 页面会提示 “PHP version too low” 或直接 502 —— 因为 Nginx 转发给了系统 PHP(比如 8.0),而你用
phpenv local 8.2.18切换的只是当前终端的 CLI 环境,对 Web 服务零影响。
.php-version 文件对 FileRun 多环境的意义有限
FileRun 本身不读取 .php-version,这个文件只被 phpenv 的 shell hook 解析,用于自动切换 CLI php 命令版本。它对 Web 请求无作用。
立即学习“PHP免费学习笔记(深入)”;
- 如果你在 FileRun 项目根目录放了
.php-version,只会影响你本地执行php artisan或php -l这类命令时的解释器版本。 - CI 流水线中想确保测试用指定 PHP 版本,得靠
PHPENV_VERSION=8.2.18 phpenv global+phpenv rehash,而不是依赖项目目录下的.php-version。
真正容易被忽略的是:FileRun 的 index.php 入口和所有 Web 请求都走 Web 服务器进程,而 phpenv 默认只接管 shell 中的 php 命令。两者隔离,必须主动打通 —— 不是装完 phpenv 就万事大吉,得确认 Web 服务背后调用的 PHP 解释器,确实是 phpenv 安装的那个二进制文件。



















