php - shell_exec() 不会改变 Linux 中的 qdisc

标签 php linux shell-exec

对于我的项目,我正在创建 WEB 界面来控制 Linux 中的 QoS。我正在尝试使用 shell_exec() 函数 PHP 与终端进行通信。如果尝试像这样简单的事情,它就会起作用:

shell_exec("ip link show");

但是如果尝试更改 qdisc(在终端中工作):

shell_exec("sudo tc qdisc replace dev eth0 root pfifo");

什么也没发生。如果我尝试 echo shell_exec(...); ,我也不会得到任何输出;

我运行的是 Ubuntu 14.04。我已经在 sudoers 文件中添加了行,无需密码即可执行 shell 命令:

#includedir /etc/sudoers.d

%www-data ALL=NOPASSWD: /var/www/html

也许我对 sudoers 文件做错了什么,或者在运行 shell_esec 命令之前我还应该做些什么?

最佳答案

%www-data ALL=NOPASSWD: /var/www/html

此 sudoers 行仅允许 www-data 执行文件 /var/www/html。 (这可能是一个目录,而不是可执行文件,因此它不执行任何操作。)

如果您希望允许 www-data 执行 tc,您需要在 sudoers 文件中使用可执行文件的完整路径进行指定。

关于php - shell_exec() 不会改变 Linux 中的 qdisc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36807642/

相关文章:

php - 使用 shell_exec 将 Powershell 输出到 PHP 变量

php - shell_exec 的输出被截断为 100 个字符

javascript - 工具提示不适用于动态创建的内容 php

php - 在 opencart 中,当表中存在记录时,SELECT 查询给出空结果

linux - 如何为我的 Linux 服务器 Web 主机应用程序添加网站密码身份验证

c++ - 在 C++ 中的 ifstream 上设置超时?

php - 在linux Redhat服务器64位上安装并执行Wkhtmltopdf(使用PHP)

php - 如何评估在 PHP 中作为字符串传递的公式?

php - 如何使用 php 扩展访问类中的变量?

linux - Windows 10 Linux 子系统。如何安装 MongoDB