Bordeux.NET

Uzyskanie PathInfo w PHP

Domyślnie, jak zainstalujesz Nginx oraz PHP, to nie masz $_SERVER['PATH_INFO'] . Należy ją ustawić. W pliku konfiguracyjnym serwera dopisz:
 
location ~ \.php($|/) {
	set $the_uri $uri;
	if ($the_uri ~ "^(.+)/$") {
		set $the_uri $1;
	}
 
	set $script $the_uri;
	set $path_info "";
 
	if ($uri ~ "^(.+\.php)(/.+)") {
		set $script $1;
		set $path_info $2;
	}
 
 
	fastcgi_pass 127.0.0.1:9000;
	fastcgi_index index.php;
	fastcgi_param PATH_INFO $path_info;
	fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name;
	fastcgi_param QUERY_STRING $query_string;
	fastcgi_param REQUEST_METHOD $request_method;
	fastcgi_param CONTENT_TYPE $content_type;
	fastcgi_param CONTENT_LENGTH $content_length;
	fastcgi_param REMOTE_ADDR $remote_addr;
	fastcgi_param SERVER_SOFTWARE BordeuxServ;
 
}
 
Następnie zresetuj serwer:
 
sudo /etc/init.d/nginx restart
 
Od tej pory możesz swobodnie używać $_SERVER['PATH_INFO']. Cały plik konfiguracyjny w moim przypadku ma zawartość:
 
# You may add here your
# server {
# ...
# }
# statements for each of your virtual hosts
 
server {
	listen 80;
	server_name 127.0.0.1;
 
	access_log /var/log/nginx/localhost.access.log;
 
	location / {
		root /var/www/;
		index index.php index.html index.htm;
	}
 
	location /doc {
		root /usr/share;
		autoindex on;
		allow 127.0.0.1;
		deny all;
	}
 
	location /images {
		root /usr/share;
		autoindex on;
	}
 
#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/;
#}
 
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
#proxy_pass http://127.0.0.1;
#}
 
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
	location ~ \.php($|/) {
		set $the_uri $uri;
		if ($the_uri ~ "^(.+)/$") {
			set $the_uri $1;
		}
 
		set $script $the_uri;
		set $path_info "";
 
		if ($uri ~ "^(.+\.php)(/.+)") {
			set $script $1;
			set $path_info $2;
		}
 
 
		fastcgi_pass 127.0.0.1:9000;
		fastcgi_index index.php;
		fastcgi_param PATH_INFO $path_info;
		fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name;
		fastcgi_param QUERY_STRING $query_string;
		fastcgi_param REQUEST_METHOD $request_method;
		fastcgi_param CONTENT_TYPE $content_type;
		fastcgi_param CONTENT_LENGTH $content_length;
		fastcgi_param REMOTE_ADDR $remote_addr;
		fastcgi_param SERVER_SOFTWARE BordeuxServ;
 
	}
 
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
	location ~ /\.ht {
		deny all;
	}
}
 
 
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
#listen 8000;
#listen somename:8080;
#server_name somename alias another.alias;
 
#location / {
#root html;
#index index.html index.htm;
#}
#}
 
 
# HTTPS server
#
#server {
#listen 443;
#server_name localhost;
 
#ssl on;
#ssl_certificate cert.pem;
#ssl_certificate_key cert.key;
 
#ssl_session_timeout 5m;
 
#ssl_protocols SSLv2 SSLv3 TLSv1;
#ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
#ssl_prefer_server_ciphers on;
 
#location / {
#root html;
#index index.html index.htm;
#}
#}
 

Komentarze - Zadaj pytanie, oceń!

: f3ca1 :
Facebook