Linux终端执行shell_exec提示command not found及语法错误咨询
问题原因
shell_exec不是Bash终端支持的内置命令,也不是Linux系统预装的独立可执行程序,它是PHP编程语言提供的内置函数,作用是在PHP运行环境中调用系统shell执行命令并捕获输出。直接在Bash交互终端输入这个命令,系统找不到对应可执行程序,自然会返回command not found报错。- Bash本身的语法规则不支持
函数名("参数")这种调用写法,输入shell_exec("pwd")时,Bash解析到括号、引号这类不符合shell语法规则的标记,就会直接抛出语法错误。
解决方法
根据实际使用场景选择对应方案即可:
- 如果只是想在Linux终端执行shell命令(比如查看当前路径的
pwd),不需要套任何函数封装,直接输入命令本身回车执行就行:# 直接执行pwd命令查看当前路径 pwd - 如果确实需要使用PHP的
shell_exec函数能力,必须在PHP运行环境中调用,不能直接在Bash命令行输入函数语句:- 方式1:编写PHP脚本文件调用,比如新建
test.php写入如下内容:
保存后在终端执行<?php // 调用shell_exec执行pwd命令并打印结果 echo shell_exec('pwd'); ?>php test.php即可拿到执行结果。 - 方式2:用PHP命令行的
-r参数直接执行单行代码,不需要创建单独的脚本文件:php -r "echo shell_exec('pwd');"
- 方式1:编写PHP脚本文件调用,比如新建
内容的提问来源于stack exchange,提问作者sugan
相关产品推荐
相关产品推荐

