php在fedora 38上运行需先安装php-cli(cli)或php-fpm+nginx(web),确认php -v可用后,按场景选用php script.php、php -s localhost:8000或nginx+php-fpm组合,注意cli与web环境配置完全隔离。

在 Fedora 38 上执行 PHP 脚本,核心就一条:确认 php 命令可用,然后按场景选方式——CLI 直接跑、内置服务器调试、或配好 Nginx + PHP-FPM 走 Web 请求。别指望双击或浏览器直接打开 .php 文件,那只会下载源码或报 404。
确认 php 命令是否就位
这是所有操作的前提。Fedora 38 默认不预装 PHP,必须手动安装;即使装了,也可能只装了 php-cli(命令行)而没装 php-fpm(Web 后端),或者反过来。
- 运行
php -v,有输出版本号(如PHP 8.2.12)说明 CLI 已就绪 - 若提示
command not found,先装基础包:sudo dnf install php-cli - 想走 Web 方式,还得补上:
sudo dnf install php-fpm nginx - 注意:Fedora 的 PHP 包名是
php-cli和php-fpm,不是单纯的php—— 这点和 Ubuntu 不同,容易漏装
用 php 命令行直接执行脚本
适合写工具、定时任务、数据处理等不需要 HTTP 协议的场景。CLI 环境和 Web 环境的配置文件完全独立,php.ini 路径也不同。
- 确保脚本第一行是
<?php,结尾不用?>(避免输出意外空白) - 在终端进入脚本目录,执行:
php script.php - 想加参数?
php script.php arg1 arg2→ 参数会进$argv数组 - 检查 CLI 用的配置文件:
php --ini,通常输出类似/etc/php.d/cli/php.ini - Fedora 下默认
display_errors = Off,调试时建议临时加error_reporting(E_ALL); ini_set('display_errors', '1');到脚本开头
用 php -S 启一个本地开发服务器
不用配 Apache/Nginx,适合快速验证逻辑或前端联调。但仅限开发,禁止用于生产。
- 命令格式:
php -S localhost:8000 router.php(router.php可选,用于自定义路由) - 当前目录即 Web 根目录,访问
http://localhost:8000/test.php就能执行 - 注意:
php -S是单线程阻塞模型,多个请求会排队;别指望它扛并发 - 如果浏览器打不开或显示空白,先确认
php -S进程还在前台运行(别误关终端)
配 Nginx + PHP-FPM 跑 Web 请求
Fedora 38 默认用 php-fpm 而非 Apache 模块,这是主流做法。出问题基本卡在这三步:服务没启、Nginx 没转发、权限/SELinux 拦路。
- 启动并启用服务:
sudo systemctl enable --now php-fpm nginx - 确认 PHP-FPM socket 路径:Fedora 默认用
unix:/run/php-fpm/www.sock,Nginx 配置里fastcgi_pass必须匹配 - Nginx server block 中必须有
location ~ \.php$块,且含include fastcgi_params;和fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; - Fedora 默认开启 SELinux,若页面空白或 502 错误,先试:
sudo setsebool -P httpd_can_network_connect 1(允许 Nginx 连 PHP-FPM) - 测试用
info.php:<?php phpinfo(); ?>放到/usr/share/nginx/html/,访问http://localhost/info.php看是否输出
最常被忽略的是:CLI 和 Web 的 php.ini 完全分离,memory_limit、date.timezone、扩展启用状态都可能不同;改完配置后记得 sudo systemctl reload php-fpm 和 sudo nginx -s reload,光重启服务不够。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











