1

我正在尝试使用 php 递归地对所有目录进行 chmod,并使用:

find /path/to/dir -type d -exec chmod 777 {} \;

在命令行中效果很好,但在服务器上使用它:

exec('find /path/to/dir -type d -exec chmod 777 {} \;');

什么也没做。有任何想法吗?和权限有关吗?路径是真正的路径服务器级别。

4

1 回答 1

2

当您在命令行上运行它时,您是以您的用户身份运行它,该用户可能是路径的所有者。当您从 PHP 执行 exec() 时,是 Apache 用户在执行此操作。只有所有者 aa 文件/目录才能对其进行 chmod。要确认是这种情况,请尝试从PHP CLI 交互式 Shell运行您的 exec() 脚本。在交互式 Shell 中,您可以运行 PHP 代码,但它将以您的用户身份执行。

如果事实证明这是原因,您必须首先 chown 目录及其子文件/目录由 Apache 用户拥有。

于 2013-01-03T22:51:21.207 回答