0

ファイルを読み取ろうとしている 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の問題のようです。

4

2 に答える 2

0
which cat

exec で cat へのフル パスを使用します。

于 2013-10-24T23:49:15.900 に答える