rocky linux 9 默认不预装 php,需先启用 crb 仓库并安装 php、php-cli 等包;验证用 php --version,运行脚本支持 php script.php、shebang + chmod +x 或 php -r 方式,注意 cli 与 web 环境的 php.ini 及超全局变量差异。

Rocky Linux 9 默认没装 PHP,得先装
直接运行 php --version 会报 command not found —— 因为 Rocky Linux 9 默认不预装 PHP,也不启用 EPEL 或 CRB 仓库。必须手动启用并安装。
- 先启用 CRB(CodeReady Builder)仓库:
sudo dnf config-manager --set-enabled crb - 再安装 PHP 主包和常用扩展:
sudo dnf install php php-cli php-common php-json - 验证安装:
php --version应输出类似PHP 8.1.27(具体版本取决于系统当前可用版本)
执行 PHP 脚本的三种常见方式
不是所有写法都能跑通,尤其要注意 CLI 模式下默认不加载 php.ini 的某些配置(比如 short_open_tag),也别指望 $_SERVER 里有 Web 环境变量。
- 直接运行文件:
php script.php(推荐,最简单) - 加 shebang 后 chmod +x:
#!/usr/bin/env php <?php echo "hello"; ?>
然后./script.php(注意第一行必须是#!/usr/bin/env php,不能硬写/usr/bin/php,因为路径可能随 PHP 版本变动) - 用
-r参数执行单行代码:php -r 'echo "hi";'(适合调试、管道处理)
常见报错:Parse error: syntax error, unexpected token
这通常不是语法写错了,而是 PHP 版本太低或启用了不兼容特性。Rocky Linux 9 默认装的是 PHP 8.1,但如果你从 Remi 仓库装了 8.2/8.3,又没清理旧配置,或者脚本用了箭头函数 fn() =>、只读属性 readonly 等 8.1 不支持的语法,就会崩。
- 查实际运行版本:
php --version和php -i | grep "Configuration File"确认加载的是哪个php.ini - 临时降级测试:
php -d short_open_tag=On script.php(有些老脚本依赖短标签) - 避免混用仓库:不要同时启用
appstream和remi的 PHP 包,冲突时dnf list installed php\*能看出来源
想让脚本像 shell 一样全局调用?别硬改 PATH
把 PHP 脚本放 /usr/local/bin 并加 shebang 是可行的,但要注意:PHP 解释器路径在 Rocky 9 中是 /usr/bin/php,且脚本里不能依赖 Web 相关超全局变量(如 $_GET、$_SERVER['DOCUMENT_ROOT'])。
- 脚本开头必须是
#!/usr/bin/env php(比硬路径更安全) - 确保脚本有可执行权限:
chmod +x /usr/local/bin/myscript - 如果脚本依赖扩展(如
curl或mbstring),要确认这些扩展已启用:php -m | grep curl
真正麻烦的是环境差异——CLI 模式下 php.ini 通常用 /etc/php.d/ 下的独立配置,跟 Apache/FPM 的不是同一份,改错地方就白调。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











