Php 目录上的shell_exec chmod

Php 目录上的shell_exec chmod,php,chmod,Php,Chmod,我正在从浏览器中调用一个PHP文件,该文件正在搜索一些子目录,并使用chmod将其权限更改为777。该进程在用户“www data”下运行 我已经暂时离开了!!允许“www data”在/etc/sudoers文件中具有正确的权限,但仍无法获得更改权限 <?php shell_exec("find /home/path -type d -name Directory_name_to_search_for -print0 | xargs -0 sudo chmod 777"); ?>

我正在从浏览器中调用一个PHP文件,该文件正在搜索一些子目录,并使用chmod将其权限更改为777。该进程在用户“www data”下运行 我已经暂时离开了!!允许“www data”在/etc/sudoers文件中具有正确的权限,但仍无法获得更改权限

<?php
shell_exec("find /home/path -type d -name Directory_name_to_search_for -print0 | xargs -0 sudo chmod 777");
?>

这与我调用sudo的位置有关吗?

输出开头的换行似乎会阻止shell\u exec打印其他内容。希望这能为其他人节省一两个小时

<?php
shell_exec("find /home/path -type d -name Directory_name_to_search_for -print0 | xargs -0 sudo chmod 777 2>&1");
?>
2> &1


您是否检查了find是否确实在查找任何内容?是的-它从命令行打印出一长串目录名,但中间没有空格。print0强制find使用null\0作为文件名分隔符,xargs在-0模式下使用该分隔符,因此文件名中的空格不会被视为文件名分隔符。因为find正在工作,所以你的sudo设置有点不稳定。好的-sudo设置确实不正确-非常感谢你现在所有的修复。好的-日志给了我这个;COMMAND=/bin/chmod 777/home/dropbox/home/path/match_1/Directory_name_to_search_for/home/path/match_2/Directory_name_to_search_for等。所有目录都存在,因此find位可以工作,但输出只被空格分隔。现在开始工作-Youssef让我在那里,Marc B谢谢。