用php的exec()删除目录文件提示权限不够

发布于 2022-09-01 16:32:46 字数 1165 浏览 12 评论 0

我在用浏览器访问服务器上的php文件,然后用exec()删除某目录文件,提示权限不够,经过一顿搜索之后,我已根据很多文章的描述进行下面的权限设置,请问还有什么漏了设置的地方导致权限还是不够?

代码test.php:
$a = exec("rm /var/test/test.txt 2>&1",$result,$status);
print_r($result);
关于权限的服务器设置:
1、apache的httpd.conf中的user和group现在是apache。

clipboard.png

2、利用visudo给了apache和root一样的权限,并把Defaults requiretty注释了。

clipboard.png

clipboard.png

3、将/var/test文件夹的权限给足,用户和用户组设为apache

clipboard.png

4、test.txt的权限和用户、用户组也设置了

clipboard.png

访问192.168.1.xxx/test.php还是不能删掉,还是提示这个:

clipboard.png

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

旧伤还要旧人安 2022-09-08 16:32:46

通过

<?php echo shell_exec('whoami');

你就可以知道为何你没有权限删除了啊
另外, 在PHP中直接创建一个文件, 看看他是什么权限,也能看到你的php的执行用户和用户组

爱格式化 2022-09-08 16:32:46

根据上面的权限配置,应该是能删除的呀。
LZ要不试试重启下apache服务器,然后再执行代码。

狼性发作 2022-09-08 16:32:46

注意到php.ini里提供有一个open_basedir配置,也就是只有在open_basedir里的目录,PHP才能进行操作,所以如果你开启了open_basedir限制,那你就应该把/var/test这个目录加到open_basedir里,重启Apache:

open_basedir="/tmp/:/var/www/html/:/var/test/"

Linux上目录用冒号(:)分隔,Windows上用分号(;)分隔.

压抑⊿情绪 2022-09-08 16:32:46

很奇怪,你把apache加入了visudo里,为什么sudo -u apache 还是不能删除文件?也就是说sudo并没有成功赋给apache这个用户了

粉红×色少女 2022-09-08 16:32:46

楼主最终怎么解决的?我也遇到了一样的问题,不管怎么样,就是提示无权限.....

空城旧梦 2022-09-08 16:32:46

所以,解决这个问题了吗?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文