我可以使用命令直接从 shell 中删除 linux 用户./del_user.sh
del_user.sh 如下
#!/bin/sh
userdel username
当我从 PHP 页面运行此脚本时,它不起作用。
echo shell_exec('./del_user.sh');
这两个文件都在同一个目录中。
可能是什么问题呢?
顺便说一句,您还没有说明您的目标是什么或这个脚本应该做什么。这是一些用户管理应用程序的一部分,还是只是一些小任务的一次性?
回答: 要启用此功能,您必须赋予 Apache sudo 的能力,这样它才能获得临时提升的权限。您可能需要根据您的操作系统对如何执行此操作进行一些谷歌搜索,但此链接提供了有关如何在 Ubuntu 中执行此操作的一些指导:Ubuntu 论坛
我还建议不要使用 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,它应该能够直接执行此操作。