PHP 7.1脚本能运行的关键是环境匹配、配置分离及权限路径正确;虽已停止维护,但在适配环境中仍可稳定执行;推荐用php script.php命令行方式调试,需先验证php -v并确保文件以.php结尾。

PHP 7.1 脚本能跑起来,关键不是版本新旧,而是运行环境匹配、配置分离、权限和路径没出错。PHP 7.1 本身已停止维护(2019年12月终止支持),但仍在不少遗留系统中使用——只要环境搭对,它完全能稳定执行。
php 命令行下直接执行 script.php
这是最干净、最容易验证脚本逻辑的方式,不依赖 Web 服务器,适合调试、定时任务或 CLI 工具。
- 先确认 php 命令可用:
php -v应输出PHP 7.1.x;如果报 command not found,得检查 PATH 或用绝对路径,比如/usr/bin/php或C:\php\php.exe - 脚本必须以
.php结尾,且首行无需<?php也能运行(但建议加上) - 执行命令:
php script.php,不是双击、不是拖进浏览器——双击只会打开编辑器或报错 - Windows 下别加 shebang(
#!/usr/bin/env php),CMD/PowerShell 不识别;Linux/macOS 可加并chmod +x script.php后直接./script.php - 常见错误
Could not open input file:大概率是当前工作目录不对,用echo getcwd();开头打印路径,或改用绝对路径调用
通过内置服务器 php -S localhost:8000 运行
PHP 5.4+ 自带的轻量服务器,PHP 7.1 完全支持,适合快速本地测试,不用配 Apache/Nginx。
- 终端进入脚本所在目录,运行:
php -S localhost:8000 - 默认会找当前目录下的
index.php;想指定入口,加路由器文件:php -S localhost:8000 router.php - 浏览器访问
http://localhost:8000/test.php即可执行——注意:这是 HTTP 请求,不是文件系统路径 - 限制:不支持 .htaccess、不能处理静态资源重写(如 Vue Router history 模式需 router.php 配合),也**不加载任何 php.ini 配置**(除非显式指定
-c参数) - 若提示
Failed to listen on localhost:8000,说明端口被占用,换端口即可,比如:8080
Web 服务器中运行却空白或下载源码
现象是浏览器打不开、显示空白页、或直接把 .php 文件下载下来——这不是 PHP 7.1 的问题,而是 Web 服务器没把请求交给 PHP 解释器。
立即学习“PHP免费学习笔记(深入)”;
- Apache:确认启用了
php7_module(非旧版libphp7.so),且配置中有类似AddHandler application/x-httpd-php .php或<filesmatch></filesmatch>块 - Nginx:必须有
location ~ \.php$块,并正确指向fastcgi_pass(如unix:/var/run/php/php7.1-fpm.sock);PHP-FPM 服务必须运行:sudo systemctl status php7.1-fpm - 改完配置后,别忘了重载:
sudo systemctl reload apache2或sudo nginx -s reload - 快速验证环境是否通:建个
info.php,内容只有<?php phpinfo(); ?>,能显示页面说明 PHP 解析链通了;如果下载文件,就是 Web 服务器根本没接管.php后缀
CLI 和 Web 环境的 php.ini 是两套独立配置
同一个 php -v 显示 7.1,不代表 CLI 和 Web 能读到同一份配置——这导致很多“本地能跑、线上报错”的问题。
- 查 CLI 配置路径:
php --ini,典型输出:Loaded Configuration File: /etc/php/7.1/cli/php.ini - 查 Web 配置路径:在
phpinfo()页面里找Loaded Configuration File,通常是/etc/php/7.1/fpm/php.ini或/etc/php/7.1/apache2/php.ini - 典型差异:
display_errors在 CLI 默认关,在 Web 开发环境常开;memory_limitCLI 常设为-1,Web 端多为128M;extension=gd可能在一套里启用,另一套里注释掉了 - 脚本里别依赖
$_SERVER['DOCUMENT_ROOT']或$_SERVER['REQUEST_URI']——CLI 下这些变量不存在,要用__DIR__或getcwd()
PHP 7.1 的核心限制不在语法,而在生态支持断档:很多新扩展(如 ext-sodium 默认启用)在 7.1 中需手动编译,而 opcache.enable_cli 在 7.1.2–7.1.6 默认是 1,其他小版本是 0——这种细微差异,恰恰是排查时最容易忽略的点。



















