2

I read in a post at Server Fault that PHP-FPM needs execute permissions. However, the answer in When creating a website, what permissions and directory structure? only grants read and write permissions to PHP-FPM. Maybe I don't quite understand how PHP handlers (or CGI in general) work, but the two claims seem contradictory to me.

As I understand, when Apache / Nginx gets a request for foobar.php, it "passes" the file to an appropriate handler. That is, I imagine it's as if www-root (or apache or whomever the webserver's running as) were to run some command,

/usr/sbin/php-fpm foobar.php

Actually, no, that's naive, I just realized. PHP-FPM must be a running instance (if it's to be performant, and cache, etc.), so probably PHP-FPM is just being told, "Hey, quick, process this file for me!"

In either case, I don't see why execute permissions are necessary. It's not like the webserver needs to literally execute the file, i.e.

./foobar.php

Is the Server Fault answer simply mistaken?

2 Answers 2

3

No, php-fpm user does NOT need execute permissions on PHP files. It only needs read permission, as PHP files are parsed by PHP preprocessor and not executed directly.

1
  • Thanks! I take it however that some (if not all) CGI programs must be executable, e.g. Python scripts? Or is everything handled by such a "handler" that only needs read access. Commented Apr 28, 2014 at 10:19
2

You are correct - the file does not need to be 755 executable. The file being passed to PHP-FPM should have permissions set to 644 (owner read/write, group read, global read). This is especially needed on shared hosting so that others can not overwrite your files.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.