发布于2026-07-15 阅读(0)
扫一扫,手机访问
在CentOS 9上跑PHP脚本,其实核心就几步:确认环境、安装、运行。不过具体操作里藏着不少坑,咱们一步步拆开看。
CentOS 9 默认不带 PHP,这事儿挺常见的。如果你直接敲 php --version,大概率会看到 command not found 的报错——别慌,不是权限问题,也不是路径问题,就是压根没装。
dnf list installed | grep php 检查一下,如果没有任何输出,说明确实没装。dnf 替代了 yum,而且默认启用了 appstream 仓库,PHP 就在这里面藏着。dnf module list php 能看到可用版本,常见的有 php:8.1、php:8.2,php:latest 指向推荐版本。dnf module enable php:8.2,然后 dnf install php-cli。注意,php-cli 是命令行执行必需的包,它不带 Web 服务器组件,够用且轻量。装完了别急着跑脚本,先确认 php 命令能正常工作,而且支持你需要的扩展:
php --version,应该输出类似 PHP 8.2.12 的信息。php -m | grep -E 'pdo|mbstring|json'。如果缺了,需要额外安装对应包,比如 php-pdo、php-mbstring。php -i | grep 'Loaded Configuration File' 可以查看配置文件路径。CentOS 9 里,通常是 /etc/php.d/ 下的 ini 文件,而不是单个 php.ini。setenforce 0,确认是 SELinux 限制后再配置策略,别直接关掉。最直接的方式就是用 php 命令,但不同场景下路径和权限处理容易出错:
#!/usr/bin/env php)且具备可执行权限(chmod +x script.php),可以直接 ./script.php 运行。php script.php 更可靠——它不依赖文件权限,只依赖 PHP 解释器和脚本内容。php "/path/to/my script.php"。php script.php arg1 arg2,参数在 $argv 数组中,$argv[0] 是脚本名,$argv[1] 才是第一个参数。echo "echo 'hello';" | php,适合调试单行逻辑。报错信息常常指向表面问题,实际根因可能是环境或配置偏差:
Parse error: syntax error:确认脚本的 PHP 版本兼容性。CentOS 9 默认 PHP 8.x,不支持 mysql_* 函数等已被移除的特性。PHP Warning: require(): failed to open stream:相对路径在 CLI 下的当前工作目录(pwd)决定,不是脚本所在目录。建议用 __DIR__ 拼接路径。Permission denied:不只是文件权限,也可能是脚本所在目录没有执行权限(CLI 需要进入目录的 x 权限)。Segmentation fault:多见于第三方扩展(如 redis、grpc)未适配 PHP 8.2 或 ABI 不匹配,尝试重装对应扩展包。$_SERVER['DOCUMENT_ROOT'] 等 Web 环境变量?CLI 下这些未定义,会触发 notice 或 fatal error。对于复杂脚本,建议加 php -d display_errors=1 -d error_reporting=E_ALL script.php 强制显示所有错误,避免静默失败。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8