我想在 ubuntu 服务器上使用 php 的 exec() 函数。 问题是,我总是收到错误消息,即找不到命令。例如使用
exec("echo 123");
打印
sh: /echo: not found
对我来说,当我想使用 bash 时,php 似乎正在使用 sh shell。 我尝试在/etc/passwd 中更改 www-data 的 shell,但这也没有帮助。
有没有人知道问题可能出在哪里,或者我如何为 php 的 ubuntu 用户更改 shell。
谢谢,蒂莫
[编辑]
也许这有帮助:
我从 ssh 调用一个 bash 脚本作为 timo,这个脚本调用一个 php 脚本,它使用 exec。我知道,这听起来很奇怪,但它是更大开发环境的一部分......
关键是,我永远不确定 exec 中的脚本是由哪个用户执行的。
[编辑]
这时候我想,肯定还有其他的权限问题。 即使我尝试从 exec 中调用 bash 脚本 test.sh(通过它的完整路径!),php test.php 也只会说。
sh: /test.sh: not found
最佳答案
改用 shell_exec()。 exec 不应调用任何 shell 来执行您的程序。或者,您可以使用 exec 调用 bash,例如
exec("/bin/bash -c \"echo $foo > bar.txt'\"")
关于php - 如何更改 php 的 exec() 的 shell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1792643/