<div dir="ltr"><div class="gmail_extra"><div>Hi Francis,</div><div><br></div><div>2015-12-02 5:50 GMT+09:00 Francis Daly <<a href="mailto:francis@daoine.org">francis@daoine.org</a>>:</div><div>> On Wed, Dec 02, 2015 at 01:52:06AM +0900, Smart Goldman wrote:</div><div>>> 2015-11-29 20:10 GMT+09:00 Francis Daly <<a href="mailto:francis@daoine.org">francis@daoine.org</a>>:</div><div>>> > On Sun, Nov 29, 2015 at 05:04:50PM +0900, Smart Goldman wrote:</div><div>></div><div>> Hi there,</div><div>></div><div>>>     location ~ ^/~(.+?)(/.*)?\.(php)$ {</div><div>>>         alias /home/$1/public_html$2.$3;</div><div>>>         fastcgi_pass   <a href="http://127.0.0.1:9000">127.0.0.1:9000</a>;</div><div>>>         fastcgi_index  index.php;</div><div>></div><div>> Delete that line - it does nothing useful here. (It does no harm, other</div><div>> than being a distraction.)</div><div>></div><div>>>         fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;</div><div>></div><div>> Change that line to be just</div><div>></div><div>>     fastcgi_param  SCRIPT_FILENAME $document_root;</div><div>></div><div>> "alias" is a bit funny. In this context, it means that $document_root</div><div>> corresponds to the file on the filesystem that you want the fastcgi</div><div>> server to process.</div><div>></div><div>> I'm a bit surprised that the current version works -- perhaps your php</div><div>> config does not have</div><div>></div><div>>   cgi.fix_pathinfo=0</div><div><br></div><div>This value is commented out.</div><div>$ grep cgi.fix_pathinfo php.ini</div><div>; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI.  PHP's</div><div>;cgi.fix_pathinfo=1</div><div>I've never edited php.ini.</div><div><br></div><div>> and so takes more than one guess at the file to process.</div><div>></div><div>>>         include        /etc/nginx/fastcgi_params;</div><div>>>     }</div><div>>></div><div>>>     location ~ ^/~(.+?)(/.*)?\.(pl|cgi)$ {</div><div>>>         alias /home/$1/public_html$2.$3;</div><div>>>         fastcgi_pass   <a href="http://127.0.0.1:8999">127.0.0.1:8999</a>;</div><div>>>         fastcgi_index  index.cgi;</div><div>></div><div>> Delete.</div><div>></div><div>>>         fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;</div><div>></div><div>> Change to remove $fastcgi_script_name, just like the previous case.</div><div>></div><div>> Here, most likely php is not involved, and your fastcgi server just tries</div><div>> to process SCRIPT_FILENAME, which does not name a real file right now.</div><div>></div><div>>>         include        /etc/nginx/fastcgi_params;</div><div>>>     }</div><div>></div><div>>> After that, I restarted nginx. Looks like PHP (/~user/index.php) finally</div><div>>> works!</div><div>>> But CGI (/~user/index.cgi) says "Error: No such CGI app -</div><div>>> /home/user/public_html/index.cgi/~user/index.cgi may not exist or is not</div><div>>> executable by this process." though I don't know why.</div><div>></div><div>> I think that the explanations are above, along with the one necessary fix</div><div>> (for cgi/pl) and the one strongly suggested fix (for php).</div><div>></div><div>> Good luck with it,</div><div><br></div><div>Great!! Both of CGI and PHP finally works!!</div><div>I made configuration file by copying from configuration file which I found from somewhere and I did not understand what fastcgi_param means.</div><div>Thanks so much for your help!</div><div><br></div><div>I put successful configuration here again for future use.</div><div><br></div><div>/etc/nginx/conf.d/default.conf</div><div>server {</div><div>    listen       80;</div><div>    server_name  localhost;</div><div>    access_log  /var/log/nginx/access.log;</div><div>    error_log   /var/log/nginx/error.log debug;</div><div><br></div><div>    #charset koi8-r;</div><div>    #access_log  /var/log/nginx/log/host.access.log  main;</div><div><br></div><div>    location / {</div><div>        root   /var/www/html;</div><div>        index  index.html index.htm;</div><div>    }</div><div><br></div><div>    location ~ ^/~(.+?)(/.*)?\.(php)$ {</div><div>        alias /home/$1/public_html$2.$3;</div><div>        fastcgi_pass   <a href="http://127.0.0.1:9000">127.0.0.1:9000</a>;</div><div>        fastcgi_index  index.php;</div><div>        fastcgi_param  SCRIPT_FILENAME $document_root;</div><div>        include        /etc/nginx/fastcgi_params;</div><div>    }</div><div><br></div><div>    location ~ ^/~(.+?)(/.*)?\.(pl|cgi)$ {</div><div>        alias /home/$1/public_html$2.$3;</div><div>        fastcgi_pass   <a href="http://127.0.0.1:8999">127.0.0.1:8999</a>;</div><div>        fastcgi_index  index.cgi;</div><div>        fastcgi_param  SCRIPT_FILENAME $document_root;</div><div>        include        /etc/nginx/fastcgi_params;</div><div>    }</div><div><br></div><div>    location ~ ^/~(.+?)(/.*)?$ {</div><div>        alias /home/$1/public_html$2;</div><div>        index  index.html index.htm;</div><div>        autoindex on;</div><div>    }</div><div><br></div><div>    #error_page  404              /404.html;</div><div><br></div><div>    # redirect server error pages to the static page /50x.html</div><div>    #</div><div>    error_page   500 502 503 504  /50x.html;</div><div>    location = /50x.html {</div><div>        root   /var/www/html;</div><div>    }</div><div><br></div><div>    # proxy the PHP scripts to Apache listening on <a href="http://127.0.0.1:80">127.0.0.1:80</a></div><div>    #</div><div>    #location ~ \.php$ {</div><div>    #    proxy_pass   <a href="http://127.0.0.1">http://127.0.0.1</a>;</div><div>    #}</div><div><br></div><div>    location ~ \.php$ {</div><div>        root           /var/www/html;</div><div>        fastcgi_pass   <a href="http://127.0.0.1:9000">127.0.0.1:9000</a>;</div><div>        fastcgi_index  index.php;</div><div>        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;</div><div>        include        /etc/nginx/fastcgi_params;</div><div>    }</div><div>    location ~ \.pl|cgi$ {</div><div>        root           /var/www/html;</div><div>        fastcgi_pass   <a href="http://127.0.0.1:8999">127.0.0.1:8999</a>;</div><div>        fastcgi_index  index.cgi;</div><div>        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;</div><div>        include        /etc/nginx/fastcgi_params;</div><div>    }</div><div><br></div></div></div>