ngo*_*o91 18 linux shell php exec
我正在使用 Linux 服务器开发一个 php 应用程序。我的问题是执行shell_exec()
调用某些 exe 文件不起作用(实际上不是 exe,它是一种 linux 可执行文件)
echo shell_exec("whoami");
Run Code Online (Sandbox Code Playgroud)
我有守护进程
echo shell_exec("ls")
Run Code Online (Sandbox Code Playgroud)
我有一些文件名但是
echo shell_exec("php -v")
Run Code Online (Sandbox Code Playgroud)
我什么都没有,一个空白页
echo shell_exec("php ....bla bla bla")
Run Code Online (Sandbox Code Playgroud)
也是空白页。
如果我在终端(用户 hu)上输入,所有这些命令都将起作用。我已经在谷歌上搜索了几个小时,人们说这是因为许可。我没有在 Linux 上的经验。我必须做什么才能在 php 中执行我的程序?
小智 12
Apache 的用户www-data
需要被授予权限才能使用sudo
.
sudo visudo
。实际上我们想编辑文件etc/sudoers
。为此,通过sudo visudo
在终端中使用,它重复(临时)sudoers
文件进行编辑。 restart
吸烟和使用php
命令进行其他操作,www-data ALL=NOPASSWD: /etc/init.d/smokeping/restart, usr/bin/php
(这是假设您希望使用超级用户(root)权限运行restart
和php
命令。并且您php
在usr/bin/
路径中使用命令)
但是,如果您希望使用超级用户权限运行每个应用程序,则添加以下内容而不是上面的内容。您可能不想这样做,而不是ALL
命令,非常危险。
www-data ALL=NOPASSWD: ALL
Run Code Online (Sandbox Code Playgroud)
3.编辑sudoers文件后(通过visudo
我们编辑sudoers
so保存并退出临时文件(visudo)的临时文件写入sudoers
文件。(wq!
)
4.就是这样,现在在您的脚本中使用exec()
或shell_exec
以下方式xxx.php
。记得sudo
在php脚本中使用命令之前使用。
前任:-
exec ("sudo /etc/init.d/smokeping restart 2>&1");
Run Code Online (Sandbox Code Playgroud)
或者
shell_exec("sudo php -v");
Run Code Online (Sandbox Code Playgroud)
因此,在您的问题中,将您希望使用的命令添加到step no (2.)
我添加并根据需要更改您的 php 脚本中。
这里和你的问题一样/sf/answers/1606733761/