php在cmd中执行失败的主因是未配置系统环境变量path,需手动添加php安装路径;其次注意路径含空格需加英文双引号、避免相对路径、结尾加pause或重定向输出查错,并确认cli模式下的php.ini启用对应扩展。

php脚本在cmd中执行不了?先确认PHP是否在PATH里
直接在cmd输 php -v 没反应,大概率是PHP没加进系统环境变量PATH。Windows不会自动把PHP安装目录加进去,哪怕你用官网安装包装了,也可能漏掉这步。
- 打开PHP安装目录(比如
C:\php),确认里面有php.exe - 右键“此电脑” → “属性” → “高级系统设置” → “环境变量”,在“系统变量”里找到
Path,点“编辑”,新增一行填入PHP完整路径(如C:\php) - 新开一个cmd窗口再试
php -v,有输出版本号才算成功
执行php文件时提示“不是内部或外部命令”
常见原因是路径含空格或中文,或者用了相对路径但当前工作目录不对。cmd对路径敏感,不自动补全、不智能解析。
- 用绝对路径执行最稳:比如
php C:\myproject\test.php - 避免路径带空格:如果PHP文件在
C:\Program Files\myapp\script.php,cmd会把它拆成C:\Program和Files\myapp\script.php两段,报错。要么改路径,要么用双引号包住:php "C:\Program Files\myapp\script.php" - 别依赖“双击运行”那种思维——cmd里必须显式调用
php命令,不能直接输test.php
执行后一闪而过,看不到输出结果
这是Windows cmd的典型表现:脚本跑完立刻退出,输出来不及看。尤其当脚本里只有 echo 没有暂停逻辑时。
- 加
readline()或sleep(1)不靠谱(readline()在非交互模式下可能失效),最简单的是结尾加echo "按回车继续..."; fgets(STDIN); - 或者直接在cmd里用
php script.php & pause,& pause是cmd原生命令,能卡住窗口 - 更推荐的做法:用
php -f script.php(-f显式指定文件)+ 配合重定向查错,比如php script.php > output.txt 2>&1把所有输出存文件里
脚本里用到了扩展(比如pdo_mysql),但cmd里报Class not found
Web服务器(如Apache/Nginx)和cmd用的可能是两套php.ini。CMD默认读取的是PHP安装根目录下的 php.ini,而不是你Web环境配好的那个。
- 运行
php --ini查看实际加载的配置文件路径 - 检查该
php.ini里是否启用了对应扩展:比如确认有extension=php_pdo_mysql.dll(Windows)且前面没被分号注释 - 注意dll文件得真实存在——去
ext/目录下找,缺的话要重新下载对应版本的PHP二进制包,别混用VC版本(VC15/VC17)和线程安全(TS/NTS)类型
phpinfo() 在浏览器里看到的扩展列表,和cmd里 php -m 输出的,真可能不一样。php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











