PHP没有权限调用.sh文件吗?

作者站长头像
站长
· 阅读数 15

我使用的是macos系统,在自己本地上搭建了服务器作为测试和学习用。我在使用php文件时,希望调用shell指令,遇到了问题。我的目标是通过php使用shell指令,调用.sh脚本,并将结果输出到一个txt文件中。我所使用的指令如下: shell_exe(“sh searchopts_q.sh -s ory -i PYL > result.txt”)searchopts_q.sh与php文件在同一目录下。

最开始我使用mac自带的终端调试,报错如下:getaddressvar.sh: line 6: declare: -A: invalid optiondeclare: usage: declare [-afFirtx] [-p] [name[=value] ...]sed: 1: "1i [": command i expects \ followed by textsed: 1: "$a ]": command a expects \ followed by text(getaddressvar.sh也在同一目录下,被searchopts.sh引用)我了解到mac的bash版本过低,且与linux系统的指令有一些差距,按照教程的指引一步步走,最后调试出了正确的结果。

接下来调试php文件的过程中,发现以终端直接调用php文件(php xxxx.php)或者直接输入指令都可以正确执行,txt里有正确内容。以浏览器方式(我这里是用接口测试软件)测试,txt里没有内容。

因此怀疑是写入权限问题,网上和本站也有类似讨论,但是在php文件里把原本的命令改成 shell_exec(‘ls > result.txt’); 并用浏览器访问,可以正确输出文件列表。

因此并不是没有权限写入,同时也说明相关函数没有被禁用,怀疑到可能没有权限使用脚本,但最后试到给整个根目录和它以下的文件全部赋予777,仍然没有用。

在这个过程中,我发现最开始的sed的问题又出现了。。。我不知道为什么已经成功过的东西会出问题,我按照另一个教程修改了bash_profile,终端恢复正确,但是通过接口测试软件仍然会得到sed报错。

我目前的推测是php似乎没有权限使用.sh文件,因为不使用.sh的shell指令和终端直接运行都成功了。但是后面的问题又让我非常困惑,希望有大佬们能够给一点推测和建议。

回复
1个回答
avatar
test
2024-07-11

查看一下网页上的环境变量 PATH

把路径改成绝对路径试试.

/bin/sh /xxx/yyy/searchopts_q.sh

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容