まず第一に、私はネイティブ スピーカーではないので、英語が下手で申し訳ありません。
私は FCGI で PHP を使用しているため、仮想ホストのそれぞれが異なるユーザーとしてそれぞれの php スクリプトを実行しています。
2 つの仮想ホスト (user1 と user2) の間で php クラスを共有する必要があったため、/etc/group 内の user1 グループに user2 を追加することをお勧めします。私はそれを行い、次のコマンドでグループのアクセス許可が正常に機能していることをテストしました。
su user2
cat /home/user1/shared_class.php
そしてそれはうまくいきました(user2はuser1クラスにうまくアクセスしました)。
しかし、PHP は同じパーミッションを認識していないようでした。テスト用に次のスクリプトを user2 仮想ホストに保存し、ブラウザーから実行しました。
<?php
passthru('whoami');
passthru('cat /home/user1/shared_class.php');
?>
正しいユーザー名 ('user2') が返されましたが、shared_class.php の内容は返されませんでした。require_once('/home/user1/shared_class.php') を実行しようとすると、「アクセスが拒否されました」というエラーも表示されます。したがって、「user2」には shared_class.php へのアクセス許可がないと PHP が認識していることは明らかです。
私が行った別のテストは実行することでした
su user1
chmod o+r /home/user1/shared_class.php
その最後のchmodの後、「user2」PHPスクリプトはファイルを問題なく読み取ることができたので、フォルダーの制限(open_basedirまたはその他のディレクティブ)ではなく、PHPが/etc/groupを無視しているだけだと確信しています。
これは期待されていますか?それを達成する方法はありますか?
私が現在使用している回避策は、
su user1
chown user1:user2 /home/user1/shared_class.php
そうすれば、user2 は php から問題なくファイルにアクセスできますが、/etc/group を使用して user2 を user1 グループに追加するなど、chown の設定を手動で変更しなくてもファイルを共有できるようにしたいと考えています。
ありがとう。