PHP and CGI on UserDir

Aleksandar Lazic al-nginx at none.at
Mon Nov 30 16:47:16 UTC 2015


Hi.

Am 29-11-2015 12:02, schrieb Smart Goldman:
> Hi, thank you for great help, Aleksandar Lazic.
> I tried it.

How looks now your config?

> PHP script shows me "File not found." and outputs the following log:
> 2015/11/29 05:50:15 [error] 5048#0: *6 FastCGI sent in stderr: "Primary
> script unknown" while reading response header from upstream, client:
> 119.105.136.26, server: localhost, request: "GET /~user/index.php
> HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000 [2]", host:
> "host.domain.com [4]"
> 
> - I do not know how to fix it...
> 
> CGI script shows me "Error: No such CGI app -
> /home//public_html/~user/index.cgi may not exist or is not executable 
> by
> this process." and outputs nothing to error.log.
> 
> - /home//public_html/~user/... I think this path is wrong and I tried 
> to
> fix this path but I could not. /home/user/public_html/ should be 
> correct
> path..

Please run the debug log to see more.

http://nginx.org/en/docs/debugging_log.html

Due to the fact that I don't know if you use the centos packes or the 
nginx package I suggest to install the following packages

http://nginx.org/en/linux_packages.html#mainline

and the nginx-debug and run the debug instance with the suggested 
settings in

http://nginx.org/en/docs/debugging_log.html

BR Aleks

> 2015-11-29 18:41 GMT+09:00 Aleksandar Lazic <al-nginx at none.at>:
> 
>> Hi Smart Goldman.
>> 
>> Am 29-11-2015 09:04, schrieb Smart Goldman:
>> 
>>> Hello. I am new here.
>>> 
>>> I try to enable PHP and CGI(Perl) on UserDir
>>> (/home/user/public_html)
>>> with nginx.
>>> But on my Chrome, PHP script is downloaded and CGI script shows me
>>> "404
>>> Not Found" page.
>>> Here's my configurations. What is wrong with my configurations?
>> 
>> Try to use nested locations.
>> 
>> http://nginx.org/en/docs/http/ngx_http_core_module.html#location
>> 
>>> OS: Linux 3.10.0 / CentOS 7 64bit
>>> nginx version: 1.8.0
>>> 
>>> ----------------------------------------------
>>> /etc/nginx/conf.d/default.conf:
>>> server {
>>> listen       80;
>>> server_name  localhost;
>>> access_log  /var/log/nginx/access.log;
>>> error_log   /var/log/nginx/error.log;
>>> 
>>> #charset koi8-r;
>>> #access_log  /var/log/nginx/log/host.access.log  main;
>>> 
>>> location / {
>>> root   /var/www/html;
>>> index  index.html index.htm;
>>> }
>>> 
>>> location ~ ^/~(.+?)(/.*)?$ {
>>> alias /home/$1/public_html$2;
>>> index  index.html index.htm;
>>> autoindex on;
>> 
>> include my_php_config.conf;
>> 
>> include my_cgi_config.conf;
>> 
>>> }
>>> 
>>> #error_page  404              /404.html;
>>> 
>>> # redirect server error pages to the static page /50x.html
>>> #
>>> error_page   500 502 503 504  /50x.html;
>>> location = /50x.html {
>>> root   /var/www/html;
>>> }
>>> 
>>> # proxy the PHP scripts to Apache listening on 127.0.0.1:80 [1]
>>> [1]
>>> #
>>> #location ~ \.php$ {
>>> #    proxy_pass   http://127.0.0.1;
>>> #}
>>> 
>>> # pass the PHP scripts to FastCGI server listening on
>>> 127.0.0.1:9000 [2]
>>> [2]
>>> #
>>> #location ~ \.php$ {
>>> #    root           html;
>>> #    fastcgi_pass   127.0.0.1:9000 [2] [2];
>>> #    fastcgi_index  index.php;
>>> #    fastcgi_param  SCRIPT_FILENAME
>>> /scripts$fastcgi_script_name;
>>> #    include        fastcgi_params;
>>> #}
>>> 
>>> location ~ (^~)*\.php$ {
>>> root           /var/www/html;
>>> fastcgi_pass   127.0.0.1:9000 [2] [2];
>>> fastcgi_index  index.php;
>>> fastcgi_param  SCRIPT_FILENAME
>>> $document_root$fastcgi_script_name;
>>> include        /etc/nginx/fastcgi_params;
>>> }
>>> location ~ (^~)*\.pl|cgi$ {
>>> root           /var/www/html;
>>> fastcgi_pass   127.0.0.1:8999 [3] [3];
>>> fastcgi_index  index.cgi;
>>> fastcgi_param  SCRIPT_FILENAME
>>> $document_root$fastcgi_script_name;
>>> include        /etc/nginx/fastcgi_params;
>>> }
>> 
>> This block into "my_php_config.conf"
>> 
>>> location ~ .*~.*\.php$ {
>>> alias /home/$1/public_html$2;
>>> fastcgi_pass   127.0.0.1:9000 [2] [2];
>>> fastcgi_index  index.php;
>>> fastcgi_param  SCRIPT_FILENAME
>>> $document_root$fastcgi_script_name;
>>> include        /etc/nginx/fastcgi_params;
>>> }
>> END
>> 
>> This block into "my_cgi_config.conf"
>> 
>>> location ~ .*~.*\.pl|cgi$ {
>>> alias /home/$1/public_html$2;
>>> fastcgi_pass   127.0.0.1:8999 [3] [3];
>>> fastcgi_index  index.cgi;
>>> fastcgi_param  SCRIPT_FILENAME
>>> $document_root$fastcgi_script_name;
>>> include        /etc/nginx/fastcgi_params;
>>> }
>> 
>> END
>> 
>>> # deny access to .htaccess files, if Apache's document root
>>> # concurs with nginx's one
>> 
>> BR Aleks
> 
> 
> 
> Links:
> ------
> [1] http://127.0.0.1:80
> [2] http://127.0.0.1:9000
> [3] http://127.0.0.1:8999
> [4] http://host.domain.com



More information about the nginx mailing list