如何更改php的exec()的shell

Tim*_*imo 11 php bash shell ubuntu exec

我想在ubuntu服务器上使用php的exec()函数.问题是,我总是得到一个错误,找不到命令.例如使用

exec("echo 123");
Run Code Online (Sandbox Code Playgroud)

版画

sh:/ echo:未找到

对我来说,当我想使用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:找不到

Tre*_*rey 11

请尝试使用shell_exec().exec不应该调用任何shell来执行你的程序.或者,您可以使用exec调用bash

exec("/bin/bash -c \"echo $foo > bar.txt'\"")
Run Code Online (Sandbox Code Playgroud)

  • 我没有安全模式的经验,所以也许这就是你的问题.试试把它关掉?无论如何你不应该使用它,它会消失,从一开始就是一个坏主意(列出大多数PHP语言"功能")http://php.net/manual/en/features.safe-mode.php (2认同)

cam*_*ase 0

我认为问题是没有 $PATH 设置。尝试使用二进制文件的完整路径,即 /bin/echo