商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > php脚本在redhat8中怎么执行

php脚本在redhat8中怎么执行

  发布于2026-07-15 阅读(0)

扫一扫,手机访问

PHP脚本在Red Hat 8上不能双击运行,也不能像HTML文件那样直接在浏览器里打开。它必须由PHP解释器来执行。具体怎么玩,取决于你当下的场景:是想快速跑个脚本,还是写个定时任务,或者正经部署一个Web服务。

php脚本在redhat8中怎么执行

用命令行直接执行(CLI 模式)

这是最直接、最可控的方式,特别适合调试、写数据处理脚本,或者挂到crontab里定时跑。

  • 首先确保 php 命令能用:敲 php -v,如果能输出版本号(比如 PHP 8.1.27),那就没问题。如果提示命令找不到,先装一下:dnf install php-cli -y
  • 进入脚本所在目录,直接运行:php script.php。如果报错 Could not open input file,说明路径不对,先 pwd 确认当前目录,或者直接用绝对路径:php /path/to/script.php
  • 想让它像shell脚本一样带执行权限跑?在文件第一行加个shebang:#!/usr/bin/env php,然后 chmod +x script.php,之后就可以直接 ./script.php 了。不过要注意,Windows的CMD/PowerShell不认shebang,所以还是老老实实用 php script.php 最稳妥。
  • CLI模式下默认不显示错误(display_errors = Off),调试时可以临时加个参数:php -d display_errors=1 script.php,这样错误信息就会直接打出来,非常方便。

用内置服务器快速测试(php -S

不需要装Apache或Nginx,适合开发阶段快速验证路由逻辑或API接口。

  • 执行:php -S localhost:8000。默认会找当前目录下的 index.php;如果想自定义路由,加一个 router.php 文件:php -S localhost:8000 router.php
  • 然后在浏览器里访问 http://localhost:8000 就能看到效果。不过要记住,这个内置服务器不支持 .htaccess、重写规则,并发能力也弱,所以仅限开发环境使用。
  • 它只解析当前目录及子目录,不会读取系统级的 php.ini,而是用CLI的配置。想知道当前用了哪个配置文件,可以跑 php --ini 查看。

通过 Apache 运行 PHP(mod_php 或 php-fpm)

这是生产环境的传统方案,但Red Hat 8默认不再启用 mod_php,推荐用 php-fpm + httpd 的FastCGI模式。

  • 先确保安装好:dnf install httpd php-fpm php-common -y,然后启动服务:systemctl enable --now httpd php-fpm
  • 配置 /etc/httpd/conf.d/php.conf(如果不存在就新建),加入以下内容,让Apache把.php文件交给PHP-FPM处理:

  SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost"

注意这里的路径必须和 /etc/php-fpm.d/www.conf 中的 listen = 一致(默认是 /run/php-fpm/www.sock)。

  • 放行防火墙:firewall-cmd --permanent --add-service=http && firewall-cmd --reload
  • 把脚本放到 /var/www/html/ 下,比如 test.php,内容写 ,然后访问 http://服务器IP/test.php。如果看到的是源码下载而不是执行结果,说明Apache没把.php交给PHP-FPM,先检查模块是否启用:httpd -M | grep fcgi,看看有没有 proxy_fcgi_module

常见失败现象与定位点

  • 浏览器打开 .php 文件变成下载:这是Web服务器没识别这个后缀,不是PHP本身的问题,检查上面的FilesMatch配置。
  • 502 Bad Gateway:PHP-FPM没启动,或者 fastcgi_pass 地址/套接字路径不匹配。
  • 503 Service Una vailable:PHP-FPM进程崩溃、内存耗尽,或者 pm.max_children 设置得太小。
  • Call to undefined function memcached_connect():扩展没装(php-pecl-memcached)或者没启用(检查 /etc/php.d/ 下对应的ini文件)。
  • CLI和网页输出结果不一致:CLI和FPM加载的是不同的 php.ini。用 php --iniphpinfo() 对比一下,就能看出哪里配置不一样。

说到底,真正卡住人的地方,往往不是“PHP怎么装”,而是“哪个配置文件管哪段行为”。所以,别跳过 php --iniphpinfo() 这两步,它们能帮你省下大量排错时间。

本文转载于:https://www.php.cn/faq/2824752.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注