我能够从外壳使用命令./del_user.sh
无法使用PHP和bash脚本
del_user.sh直接删除Linux用户删除的Linux用户是如下
#!/bin/sh
userdel username
当我运行这个脚本从PHP页面,它不起作用。
echo shell_exec('./del_user.sh');
这两个文件都在同一个目录中。
可能是什么问题?
我能够从外壳使用命令./del_user.sh
无法使用PHP和bash脚本
del_user.sh直接删除Linux用户删除的Linux用户是如下
#!/bin/sh
userdel username
当我运行这个脚本从PHP页面,它不起作用。
echo shell_exec('./del_user.sh');
这两个文件都在同一个目录中。
可能是什么问题?
另外,你还没有说明你的目标是什么或者这个脚本应该做什么。这是一些用户管理应用程序的一部分,还是仅仅是一个小任务的一次性?
回答: 要启用此功能,您必须让Apache具有sudo功能,以便获得暂时提升的权限。您可能需要根据您的操作系统做一些搜索操作,但这个链接提供了一些关于如何在Ubuntu中执行操作的指导:Ubuntu Forums
我也建议不要使用bash脚本,因为它并不是真的有必要做这个。您可以使用接受命令行参数的PHP脚本。所以在你的主要脚本中,你可以有这样的东西:shell_exec('php /path/to/del_user.php username');
然后在del_user.php你会有类似shell_exec('userdel '.$argv[1]);
。关于命令行参数的更多信息可以在这里找到:$argv
最后,你可以把它直接放到你的主脚本中,而不是使用shell_exec两次。换句话说,只需使用shell_exec('userdel '.$username);
而不是调用脚本。由于Apache将能够sudo,因此应该能够直接执行此操作。
'www-data'用户是否有权限运行该脚本? – Waygood 2013-05-01 13:17:40
它的权限,你可能能够删除一个用户,当你是根,但网络服务器不会有,实际上应该没有权限这样做 – Anigel 2013-05-01 13:17:47
我应该在哪里设置权限? – KiranD 2013-05-01 13:22:04