4

読み取り/書き込み用にファイルを開こうとしています。私はUbuntuで開発してきましたが、何の問題もありませんでした。次に、RHELサーバーにデプロイします。書き込み先のファイルの場所に、なんらかの制限があるようです。

RHELでは、/ var / www / htmlの下にない限り、ファイルを開くことができません。他の場所を許可する方法がわかりません。ディスク容量管理の理由から、別のボリューム上のファイルを操作する必要があります。

以下は、Ubuntuで正常に機能するコードですが、ファイルがWebルートの外部にある場合はRHELで機能しなくなります。

$repometa = fopen( "/path/to/file/it/does/exist/and/has/good/perms", "r+b");

実際のエラーは次のとおりですが、これは奇妙なことです。これは、アクセス許可が適切であるためです( "apache"ユーザーが所有し、ファイルに0644パーマ、dirsに755パーマがあります)。

fopen(<thefile>): failed to open stream: Permission denied

RHELのApache/PHP構成を解除して、ファイルシステム上の別の場所に書き込むことができるようにする方法を説明しているドキュメントを誰かに教えてもらえますか?

ありがとう、〜ポール

4

3 に答える 3

3

受け入れられた回答にいくつかの詳細を追加するために、この正確な問題もあり、このコマンドで修正されました。

chcon -R -t httpd_sys_content_t /path/to/file/it/does/exist/and/has/good/perms
于 2013-01-14T17:07:19.127 に答える
3

man ページに書かれているように、httpd_selinux(8)ファイルやディレクトリに対して読み書きできるようにするには、ファイルやディレクトリに特定のファイル コンテキストを与える必要があります。詳細については、man ページを参照してください。特に、PHP を CGI として実行するように設定していない限り、PHP スクリプトはデーモンとして実行されることに注意してください。

于 2012-01-25T06:39:24.850 に答える
1

ユーザーおよび/またはグループの権限の問題のようです。ファイル自体は書き込み可能である可能性があります...(素敵なパス名で述べたように)が、おそらくapacheユーザー(またはタイトルが付けられています)は、デフォルトの/var/www/以外のファイルを変更することは許可されていませんhtml ディレクトリ?

/var/www/html 内のファイルに変更を加えてから、別のシェルスクリプト (および/またはユーザー) にそこからファイルを取得して目的のディレクトリに移動させる方法はありますか?

RHEL ではなく Ubuntu で動作するのは興味深いことです。ユーザーとグループに関する限り、RHEL の方がより厳密である可能性があります。

余談ですが、一般的には、PHP が www ディレクトリの外にあるファイルに書き込みを行わない方が安全かもしれません... :)

編集

@Ignacio のヒント (1) では、次のようなものがうまくいくかもしれません: http://us2.php.net/manual/en/function.fopen.php#56551

それが常に必要な場合は、コマンド ラインで次のように入力してみてください。

/usr/sbin/setsebool -P httpd_can_network_connect=1

wwwフォルダー外でのPHPファイル操作にはまだ注意が必要です...しかし、それが役立つことを願っています...!

(1) http://linux.die.net/man/8/httpd_selinux

于 2012-01-25T06:35:48.727 に答える