PHP 执行外部命令 - 当需要用户名和密码时如何执行

标签 php exec

好的,所以我想将目录的文件模式更改为 777,所以我使用该行

exec('chmod -R 777' . $dir);

其中 $dir 是我想要更改的目录的目录路径

它似乎不起作用,但我没有收到错误,而且如果我执行脚本的用户是 sudo 用户,所以我在输入命令后必须输入密码,怎么办我做这个?会是类似 exec('chmod -R 777' . $dir\n 'password'); 吗?

最佳答案

我从中得到的信息site

通过PHP执行系统命令

很多时候我们需要在Linux系统上执行系统命令——删除目录,或者重启服务。然而,由于 Apache 不以 root 权限运行,因此几乎不可能使用 PHP 的 exec()、system() 或 passthru() 函数来实现这一点。

这个问题的解决方案非常简单,特别是在 Ubuntu 上。 Apache 的用户 www-data 需要被授予权限才能使用 sudo 执行某些应用程序。

1.运行命令sudo visudo

2.在文件末尾添加以下内容

www-data ALL=NOPASSWD:/sbin/iptables,/usr/bin/du

假设您希望使用 super 用户 (root) 权限运行 iptables 和 du。但是,如果您希望使用 super 用户权限运行每个应用程序,请添加以下内容而不是上面的内容

www-data ALL=NOPASSWD: ALL

3.就是这样,现在在 .php 脚本中按以下方式使用 exec()

exec("sudo iptables -P FORWARD ACCEPT");

关于PHP 执行外部命令 - 当需要用户名和密码时如何执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25644066/

相关文章:

php - Yii 2 用户身份验证和基于角色的访问控制(RBAC)模块安装和使用

javascript - 如果文件下载错误,则在提交表单上管理JSON服务器响应

执行exec的PHP脚本

java - Runtime.getRuntime().exec 可以是类路径资源吗?

msbuild exec 任务调用 msbuild

java - 在 Java 中调用 Grep 会给出错误的结果,而在 shell 中调用 grep 会给出正确的结果

php - Lighttpd + PHP + FCGI

php - 调用未定义的方法 Slim\\Psr7\\Response::write()

php - 将 AM PM 时间字符串存储到 MySQL 中的 TIME 数据类型中并在显示时使用 AM PM 检索?

PHP Exec() 和 Python 脚本的可伸缩性