web-dev-qa-db-ja.com

Apacheパーミッション、PHPファイル作成、MKDir失敗

ファイルを作成できないようです。 777にアクセス許可を設定すると、フォルダーでフォルダーを作成しようとしていますが、スクリプトは正常に動作します。フォルダーが755に設定されている場合、失敗します。私はLinuxについてあまり知りませんが、私はこのようなことを理解すると思います。数時間かけて試してみました。 Apacheが十分に高いアクセス許可を持つようにする方法を知っていますか。



アクセス許可とApacheの問題であることは知っていますが、これを修正する方法はわかりません。 httpd.confファイルを編集しましたが、自分が何をしているか本当にわかりません... (バックアップを保存しました。)

23
Michael

お願い 777の使用を提案しないでください。あなたは誰でもファイルを書き込み可能にしているので、許可システムが設計されたすべてのセキュリティを失うことになります。これを提案する場合、不適切に構成されたWebサーバーに与える可能性のある結果について考えてください。ファイルを上書きすることで、Webサイトを非常に簡単に「ハッキング」することができます。だから、しないでください。

マイケル:スクリプトでディレクトリを作成できない理由は完全に実行可能です。PHP(Apacheとは異なる場合があります)を実行しているユーザーは、そのための十分なアクセス許可を持っていません。パーミッションの変更については、根本的な問題を解決する必要があると思います。つまり、ファイルの所有者が間違っているか、ApacheまたはPHPが間違ったユーザーの下で実行されています。

これで、独自のサーバーがインストールされているようです。ほとんどのLinuxにインストールされている「whoami」プログラムを呼び出す簡単なスクリプトを実行することで、どのユーザーが実行されているかを確認できますPHP:

<?php
echo `whoami`;

すべてが正しい場合、ユーザー名PHPが実行されています。OSによっては、これは 'www-data'、 'nobody'、 'http'、またはその他のバリエーションになります。あなたのウェブサイトが実行中の唯一のウェブサイトである場合、これはApacheを実行するユーザーを変更することで簡単に変更できます。Debianをお持ちの場合、私がそうであるように、 Apache_RUN_USERの値。OSによっては、この変数は別の構成ファイルで設定される場合があるため、/ etc/Apache2/envvarsで見つからない場合は、次を使用して変数宣言を検索してみてください。

$ grep -R "Apache_RUN_USER=" .

ディレクトリからすべてのApache-configファイルが入っています。

サーバー上に自分が1人だけいない場合は、すべてのWebサイトのユーザーアカウントを作成し、Apache2-MPM-ITKなどを使用して、呼び出されるWebサイトに応じてRUN_USERを変更することを検討できます。また、PHPプロセスが実行されているユーザーがファイルとディレクトリの所有者であることを確認してください。chownを使用してこれを実現できます。

% chown theuser:theuser -R /var/www/website/

PHPが自身のユーザーで実行され、書き込みが必要なファイルとディレクトリの所有者である場合、パーミッション700で十分です。ほとんどのファイルには750を使用する傾向があります。 、私は通常、そのグループに複数のユーザーがいて、読み取り権限を持つことができるため、権限を変更できます。

% chmod 0750 -R /var/www/website/

それであるはずです。問題が発生した場合はお知らせください。しないでください本質的に次のようなアドバイスを受け取ります。セキュリティが気になる場合は、セキュリティを削除します。

91
Berry Langerak

同様の問題がありますが、私の場合、SELinuxを実行していて、0777の許可があっても失敗しました。次のコマンドを使用して、httpdにディレクトリへの書き込みアクセスを明示的に許可する必要があることがわかりました。

chcon -R -t httpd_sys_rw_content_t <PARENT_OF_MKDIR_TARGET>

SELinuxトラブルシューティングツールに詳細が記載されている場合があります。

13
user1533634

Ubuntuで、Berryが提案したように/ etc/Apache2/envvarsを編集します。

Apacheユーザーを変更するときは、意図しない結果に注意してください。それらの1つは、PHPセッションで、/ var/lib/php5に保存されます。そのフォルダーの所有権も変更する必要があります。

6
JG Estiot

Phpユーザー(www-data、php、Apacheなど)には、755ディレクトリへの書き込み権限が必要です。私はそれがフォルダの作成者のグループのメンバーではないか、そうでない場合はフォルダに書き込むことができると仮定しています。 phpユーザーをグループに追加するか、フォルダーのアクセス許可を777に変更します。どちらもオプションでない場合は、 PECL SSH2 拡張機能を使用してグループ内のユーザーでログインできます(またはファイルの所有者)、代わりにファイルを作成します。

1
Explosion Pills