web-dev-qa-db-fra.com

Est-ce que PHP-FPM (et d'autres PHP gestionnaires) ont besoin d'autorisations d'exécution sur les fichiers PHP qu'ils servent?

J'ai lu dans n message sur Server Fault que PHP-FPM a besoin de droits d'exécution . Cependant, la réponse dans Lors de la création d'un site Web, quelles sont les autorisations et la structure de répertoires? n'accorde que lire et écrire les autorisations sur PHP-FPM. Je ne comprends peut-être pas très bien le fonctionnement de PHP gestionnaires (ou CGI en général), mais ces deux affirmations me semblent contradictoires.

Si je comprends bien, lorsque Apache/Nginx reçoit une demande de foobar.php, il "passe" le fichier à un gestionnaire approprié. C’est-à-dire que j’imagine que c’est comme si www-root (ou Apache ou qui que ce soit qui exécutait le serveur Web) exécutait une commande,

/usr/sbin/php-fpm foobar.php

En fait, non, c'est naïf, je viens de me rendre compte. PHP-FPM doit être une instance en cours d'exécution (si elle doit être performante, cache, etc.), donc probablement PHP-FPM vient juste d'être dit , "Hé, vite, processus ce fichier pour moi! "

Dans les deux cas, je ne vois pas pourquoi exécuter des autorisations sont nécessaires. Ce n'est pas comme si le serveur Web devait littéralement exécuter le fichier, c'est-à-dire.

./foobar.php

La réponse d'erreur de serveur est-elle simplement erronée?

1
Andrew Cheong

Non, l'utilisateur php-fpm n'a PAS besoin des autorisations execute sur les fichiers PHP. Il n'a besoin que d'une autorisation de lecture, car les fichiers PHP sont analysés par PHP préprocesseur et non exécutés directement.

3
phoops

Vous avez raison - le fichier n'a pas besoin d'être exécutable. Le fichier transmis à PHP-FPM doit disposer d'autorisations définies sur 644 (lecture/écriture par le propriétaire, lecture du groupe, lecture globale). Cela est particulièrement nécessaire sur l'hébergement partagé afin que d'autres ne puissent pas écraser vos fichiers.

1
Dave Lozier