私はphpですべてのディレクトリを再帰的にchmodしようとしています。
find /path/to/dir -type d -exec chmod 777 {} \;
コマンドラインからはうまく機能しますが、サーバーから使用すると次のようになります。
exec('find /path/to/dir -type d -exec chmod 777 {} \;');
何もしません。何か案は?許可関連ですか?パスは実際のパス サーバー レベルです。
私はphpですべてのディレクトリを再帰的にchmodしようとしています。
find /path/to/dir -type d -exec chmod 777 {} \;
コマンドラインからはうまく機能しますが、サーバーから使用すると次のようになります。
exec('find /path/to/dir -type d -exec chmod 777 {} \;');
何もしません。何か案は?許可関連ですか?パスは実際のパス サーバー レベルです。
コマンドラインで実行すると、おそらくパスの所有者であるユーザーとして実行されます。PHP から exec() を実行する場合、実行しているのは Apache ユーザーです。ファイル/ディレクトリの所有者のみが chmod できます。これが事実であることを確認するには、PHP CLI Interactive Shellから exec() スクリプトを実行してみてください。Interactive Shell 内で PHP コードを実行できますが、ユーザーとして実行されます。
それが原因であることが判明した場合は、最初にディレクトリをchownする必要があり、そのサブファイル/ディレクトリはApacheユーザーが所有する必要があります。