サーバー上の PHP スクリプトがディレクトリを作成できない場合、これは通常、PHP が apache/nobody として実行されているためですか? このことから、サーバーの構成が間違っていると言えますか? (または標準構成を使用するだけ)
セキュリティ上の理由から、ユーザーとして php を実行した方がよいでしょう。また、実行した場合、この問題 (777 が必要) は引き続き発生しますか? 仕方ないとは思いますが質問させていただきます...
サーバー上の PHP スクリプトがディレクトリを作成できない場合、これは通常、PHP が apache/nobody として実行されているためですか? このことから、サーバーの構成が間違っていると言えますか? (または標準構成を使用するだけ)
セキュリティ上の理由から、ユーザーとして php を実行した方がよいでしょう。また、実行した場合、この問題 (777 が必要) は引き続き発生しますか? 仕方ないとは思いますが質問させていただきます...
IMO 777 ディレクトリを持つべきではありません。ユーザーのいない Web サーバーではそれほど問題にはなりませんが、決して必要ではなく、とにかく避けるべきです。
Debian 上の PHP は、Apache と同じユーザーおよびグループ (www-data) として実行されます。そのため、ファイル アクセス制御を構成して、そのユーザーが好きなことをできるようにするだけです。777 は必要ありません。
他のディストリビューションにも同様の構成がありますが、いつでもapache2.confおよびphp.iniファイルを編集して、必要な結果を得ることができます。
このことから、サーバーの構成が間違っていると言えますか?
いいえ、そうあるべきです。Apache によって実行される php スクリプトは、ユーザーとして実行されますwww-data
(Ubuntu 上)。www-data
サーバー全体に対する書き込み権限は実質的にありません。そして、それが本来あるべき姿です。少しでも安全でない php スクリプト (コード インジェクションの影響を受けやすいなど) を作成し、root として実行すると、悪意のある訪問者がハード ドライブ全体を消去する可能性があります。
セキュリティ上の理由から、ユーザーとして php を実行した方がよいでしょうか?
ユーザーとは誰のことですか? ルートの場合は、上記を参照してください。root 権限を持つユーザーの場合は、上記を参照してください。
この問題 (777 が必要) は引き続き発生しますか?
問題は、外部ディレクトリに対する完全な読み取り、書き込み、および実行のアクセス許可を必要とするコードを使用していることです。
スクリプトでのみ使用されるディレクトリの場合は、それwww-data
を所有する必要があります。問題が解決しました。
重要なシステム領域にアクセスする必要がある php スクリプトを使用している場合は、これを行う方法を再考することをお勧めします。php スクリプトが実行するはずの多くのタスクは、スクリプトによってスケジュールされ、後で cron ジョブによって実行される可能性があります。
最後になりましたが、どうしても必要な場合は、任意のユーザーとして php を実行できます。モジュールmpm_itk_module
をインストールして追加するだけです
AssignUserId user group
<VirtualHost>
タグの内側。
ただし、前に述べたように、不適切なスクリプトと不適切な権限を使用すると、Very Bad Things (TM) が発生する可能性があることに注意してください。