web-dev-qa-db-ja.com

PHPが777なしでファイルを書き込むことを許可する

大学が提供するウェブスペースにシンプルなウェブサイトを設置しています。データベースにアクセスできないため、すべてのデータをフラットファイルに保存しています。私が経験している問題は、ファイルの権限に関連しています。データファイルを読み書きするにはPHPが必要ですが、ファイルを777に設定したくありません。システム上の他の誰かがファイルを変更する可能性があるためです。すでに読み取りアクセス権があります。誰のウェブディレクトリにも。これを達成する方法について何かアイデアはありますか?

前もって感謝します

4
camerongray

0755(またはそれ以下)を設定するだけですが、ディレクトリ所有者が、コンテキストがApache(または他のWebサーバー)を実行しているユーザーであることを確認してください。

例えば

chown Apache:apache /var/www/html

たとえば、phpinfo()を使用してユーザーに関する情報を取得できます。

[〜#〜]更新[〜#〜]

Apacheをより多くのサイトと共有している場合は、コンテンツをユーザーごとのWebディレクトリで区切る必要があります。

http://httpd.Apache.org/docs/2.2/howto/public_html.html

4
user106666

suPHP を使用してこのタスクを実行できます。使用できる場合は、ファイルのアクセス許可を0700に変更するだけで、すべてが希望どおりに機能します。

4
vagarwal

理想的な状況は、サーバー上のファイルシステムがposix aclsをサポートしている場合です。これにより、Webサーバーが実行されているuidの特定のファイルへの書き込みアクセスを追加できます。

また、ファイルシステムに(できればシェルアカウントを介して)十分にアクセスして、ACL権限を設定できます。

概要についてはman aclを、設定方法の詳細についてはman setfaclを参照してください。

2

以下のコマンドを使用して、読み取り/書き込み権限を設定できます。

Sudo chown www-data PATH

www-dataが存在しない場合は、Apache:apacheまたはApacheに置き換えることができます。

0
navid_gh