PHP脚本可直接通过命令行运行,需确保php命令在PATH中或使用绝对路径,推荐添加shebang并赋执行权限;Web服务器需正确配置PHP处理器,CLI与Web环境配置文件通常分离,PHP-FPM异常会导致502/503错误,应逐层排查。

PHP脚本怎么直接运行(不走Web服务器)
命令行下执行 PHP 脚本最常用也最可控,适合写工具、定时任务、数据迁移等场景。关键不是“能不能”,而是路径、权限和解释器是否就位。
- 确保
php命令在系统 PATH 中,终端输入php -v能看到版本号;否则得用绝对路径,比如/usr/bin/php或/opt/homebrew/bin/php - 脚本第一行加 shebang(可选但推荐):
#!/usr/bin/env php,然后chmod +x script.php,就能像普通命令一样./script.php运行 - 注意:Windows 下 CMD 不认 shebang,PowerShell 也不默认支持,老实用
php script.php - 如果报错
Could not open input file,大概率是当前目录不对,或用了相对路径但工作目录不是预期位置——建议脚本开头加echo getcwd();确认
Web服务器里跑PHP,为什么浏览器访问空白或下载源码
这不是 PHP 本身的问题,而是 Web 服务器没把 .php 文件交给 PHP 解释器处理。Apache 和 Nginx 配置逻辑完全不同,但错误现象高度一致。
- Apache:检查是否启用了
mod_php(旧版)或php_module(新版),且配置里有类似AddType application/x-httpd-php .php或块 - Nginx:确认
location ~ \.php$块存在,并正确指向fastcgi_pass(如127.0.0.1:9000或unix:/var/run/php/php8.2-fpm.sock) - 常见坑:改完配置忘了
sudo systemctl reload apache2或sudo nginx -s reload;或者 PHP-FPM 服务根本没启动(sudo systemctl status php8.2-fpm) - 测试小技巧:新建
info.php,内容只有,能输出页面说明环境通了;如果下载文件,就是 Web 服务器没接管 .php 后缀
PHP CLI 和 Web 环境的配置差异有多大
同一个 php.ini 文件?基本不可能。CLI 和 Web(FPM/Apache 模块)通常加载的是两套独立配置,连扩展都可能不一样。
- 查 CLI 的配置路径:运行
php --ini,输出类似Loaded Configuration File: /etc/php/8.2/cli/php.ini - 查 Web 的配置路径:在
phpinfo()页面里找Loaded Configuration File,通常是/etc/php/8.2/fpm/php.ini或/etc/php/8.2/apache2/php.ini - 典型差异点:CLI 默认关闭
display_errors,而开发环境 Web 端常打开;memory_limit在 CLI 里常设为-1(无限制),Web 端则严格限制防超时 - 写脚本时别假设
$_SERVER['DOCUMENT_ROOT']存在——CLI 下它根本没定义;要用__DIR__或dirname(__FILE__)定位当前文件路径
PHP-FPM 进程挂了,请求就卡住?怎么快速定位
FPM 不是黑盒,它挂掉的表现往往是 502 Bad Gateway(Nginx)或 503 Service Unavailable(Apache),但日志里往往只有一行“connection refused”。
立即学习“PHP免费学习笔记(深入)”;
- 先看 FPM 主进程是否存活:
ps aux | grep php-fpm,应该能看到 master 进程和若干 worker;如果只剩 grep 自己,说明崩了 - 查错误日志:默认在
/var/log/php8.2-fpm.log或/var/log/php-fpm/error.log,重点搜WARNING和ERROR,常见如unable to bind listening socket(端口被占)、failed to load configuration file(ini 语法错) - 配置热加载失败很隐蔽:改了
www.conf里的listen地址,但没 reload,FPM 还在监听旧地址;或者listen.owner设成不存在的用户,启动直接失败 - 临时验证:停掉 FPM,手动用
php-fpm -t测试配置语法,再php-fpm -F -R前台运行看实时报错,比盲 reload 有效得多











