php - 如何更改 php 的 exec() 的 shell

标签 php bash shell ubuntu exec

我想在 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/

相关文章:

javascript - 第二个相关下拉列表未填充数据

php - Laravel 检索多行数据

javascript - 如果它有值,则将 html 输入框设置为只读

regex - 用随机值替换文本文件中的模式

bash - 如何删除以双连字符开头的文件?

java - 传递包含空格的 shell 脚本参数作为 java 系统属性

php - Laravel 第二次测试失败

bash - bash脚本中没有空格的变量赋值背后的基本原理是什么

c - shell 排序随机 float 组不起作用

linux - linux 的加密密码文件