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 ユーザーです。ファイル/ディレクトリの所有者のみが chmod できます。これが事実であることを確認するには、PHP CLI Interactive Shellから exec() スクリプトを実行してみてください。Interactive Shell 内で PHP コードを実行できますが、ユーザーとして実行されます。

それが原因であることが判明した場合は、最初にディレクトリをchownする必要があり、そのサブファイル/ディレクトリはApacheユーザーが所有する必要があります。

于 2013-01-03T22:51:21.207 に答える