nginx php fastcgi unable to write , permission denied even using his own permission
Solution 1
found the culprit! (of my own answer) i just have to change a line in the file /etc/init.d/php-fcgi
from
PHPUSER=php
to
PHPUSER=nginx
and then restart
Solution 2
(i) if you have set user:group to nginx and the permissions are 0755 then you are ok (ii) if you still have permission denied, then check selinux. i.e
$sudo setenforce 0
(iii) With selinux disabled, check if you are now able to write.
Lezir Opav
Updated on June 05, 2022Comments
-
Lezir Opav almost 2 years
Hi' i have permission denied when using write to text function like file_put_contents. i'm using nginx inside centos 6 environment, i use php-fcgi
the problem ONLY solved by set the dir permission to 777, but i dont want that solution.
here's the php code
<?php error_reporting(E_ALL); header("content-type:text/plain"); if(isset($_GET['akarapaci'])) {phpinfo();} echo getcwd(); echo "\nscript owner : ".get_current_user()."\n"; echo "\nscript getmyuid : ".getmyuid()."\n"; echo "\nscript getmygid : ".getmygid()."\n"; file_put_contents(dirname(__FILE__)."/X","1"); ?>
here's the result :
/var/www/html script owner : nginx script getmyuid : 496 script getmygid : 493
the code is just simple write to file /var/www/html/X (the file not created yet), and have error like this
2012/10/27 19:51:59 [error] 1010#0: *32 FastCGI sent in stderr: "PHP Warning: file_put_contents(/var/www/html/X): failed to open stream: Permission denied in /var/www/html/info.php on line 10" while reading response header from upstream, client: 111.94.49.72, server: vprzl.com, request: "GET /info.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "vprzl.com"
and here's the list of dir inside /var/www/
total 40 drwxr-xr-x 2 root root 4096 Oct 27 08:44 backup drwxr-xr-x 2 root root 4096 Feb 14 2012 cgi-bin drwxrwxrwx 3 root root 12288 Oct 27 08:47 devel drwxr-xr-x 3 root root 4096 Oct 20 04:48 error drwxrwxr-x 2 nginx nginx 4096 Oct 27 19:24 html drwxr-xr-x 3 root root 4096 Oct 17 18:19 icons drwxr-xr-x 5 root root 4096 Oct 27 16:57 images drwxr-xr-x 2 root root 4096 Oct 26 14:28 secret
and here's my nginx.conf
user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; server { listen 80; server_name vprzl.com www.vprzl.com; index index.html; root /var/www/html/; location / { # Rewrite rules and other criterias can go here # Remember to avoid using if() where possible (http://wiki.nginx.org/IfIsEvil) index index.html index.htm; } location ~ \.php$ { include fastcgi_params; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } } server { listen 80; server_name images.vprzl.com; index index.html; root /var/www/images/; location / { # Rewrite rules and other criterias can go here # Remember to avoid using if() where possible (http://wiki.nginx.org/IfIsEvil) index index.html index.htm; } } server { listen 80; server_name secret.vprzl.com; index index.html; root /var/www/secret/; location / { index index.html index.htm; } } }
-
rodorgas almost 9 yearsPHP 5.6.7 doesn't have this parameter, now it's called
user
(alongsidegroup
). Changing touser=nginx
also did the trick. -
Pathros almost 6 yearsHow can I find that file? it is not in there
/init.d
. I got CentOS 7 and php7.2 -
Pathros almost 6 years@rodorgas That does not work well in my case :( Could you please take a look at my question?
-
kiatng about 5 yearsTry setting
user = nginx
in/etc/php-fpm.d/www.conf