ファイルを読み取ろうとしている Web ページがありますが、許可が拒否されたというエラーが表示されます。問題を再現するための非常に簡単なページを作成しました。
<?php
echo exec('whoami');
echo "<br>";
echo exec('cat /var/svn/aaa/format 2>&1');
?>
テストとして、svn dir と以下のすべてのパーミッションをばかげた 777 に設定し、所有権を apache に変更し、apache ユーザーを別のグループに追加しようとしました。Apacheユーザーとして実行されていることを確認しました(上記のwhoami呼び出しの目的です)。上記のコマンドをコマンド ラインで apache として実行しようとすると、正常に動作します。
sudo -u apache cat /var/svn/aaa/format 2>&1
これが期待どおりに動作しないのはなぜですか? ファイルに 777 を与えると、「その他」の完全なアクセス許可が付与されると予想されます。所有者を apache に変更すると、問題も解決されると予想されます。PHPから失敗した場合、Apacheユーザーが失敗するため、sudoを実行すると予想されます。
ところで、完全を期すために、これは私がWebSVNを実行している問題ですが、WebSVNの問題ではなくApacheの問題のようです。