web-dev-qa-db-ja.com

PHP-FPM(および他のPHPハンドラー)は、提供しているPHPファイルの実行許可を必要としますか?

Server Faultでの投稿 PHP-FPMに必要なexecuteパーミッションを読みました。ただし、 Webサイトを作成するとき、どのような許可とディレクトリ構造ですか? の答えは、readおよびwritePHP-FPMへのアクセス許可。 PHPハンドラー(またはCGI全般)がどのように機能するのかよくわかりませんが、2つの主張は矛盾しているように見えます。

私が理解するように、Apache/Nginxはfoobar.phpのリクエストを取得すると、ファイルを適切なハンドラーに「渡します」。つまり、www-root(またはApacheまたはWebサーバーの実行者)が何らかのコマンドを実行するかのように、

/usr/sbin/php-fpm foobar.php

実は、いや、それはナイーブだ、と私は気付いた。 PHP-FPMは実行中のインスタンスである必要があり(パフォーマンスやキャッシュなどの場合)、おそらくPHP-FPMはtold、 "ねえ、クイック、プロセスこのファイルは私のためです!」

どちらの場合でも、なぜexecute許可が必要なのかわかりません。 Webサーバーが文字通りexecuteファイルi.e。を実行する必要はない

./foobar.php

サーバー障害の答えは単純に間違っていますか?

1
Andrew Cheong

いいえ、php-fpmユーザーはPHPファイルに対するexecute権限を必要としません。 PHPファイルはPHPプリプロセッサによって解析であり、直接実行されないであるため、読み取り権限のみが必要です。

3
phoops

正しい-ファイルは実行可能ファイルである必要はありません。 PHP-FPMに渡されるファイルには、644(所有者の読み取り/書き込み、グループの読み取り、グローバルの読み取り)に設定されたアクセス許可が必要です。これは、他のユーザーがファイルを上書きできないように、共有ホスティングで特に必要です。

1
Dave Lozier