title: nginx php fastcgi unable to write , permission denied even using his own permission
body: <p>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</p>
  
  <p>the problem ONLY solved by set the dir permission to 777, but i dont want that solution. </p>
  
  <p>here's the php code</p>
  
  <pre><code>&lt;?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");
  ?&gt;
  </code></pre>
  
  <p>here's the result :</p>
  
  <pre><code>/var/www/html
  script owner : nginx
  
  script getmyuid : 496
  
  script getmygid : 493
  </code></pre>
  
  <p>the code is just simple write to file /var/www/html/X (the file not created yet), and have error like this</p>
  
  <pre><code>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"
  </code></pre>
  
  <p>and here's the list of dir inside /var/www/</p>
  
  <pre><code>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
  </code></pre>
  
  <p>and here's my nginx.conf </p>
  
  <pre><code>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;
        }
      }
  }
  </code></pre>