Jump to content
Froxlor Forum
  • 0

nginx php5-fpm Path_Info


Infected

Question

Guten Tag zusammen,

und zwar m?chte ich mir eine Forensoftware installieren.

Diese ben?tigt Path_Info.

 

Jetzt habe ich mal geschaut, aber finde nirgends was passendes f?r Froxlor.

Und wenn ich etwas in der nginx.conf ?nder, ist dieses ja nach der neuerstellung der Config wieder weg.

 

Wie gehe ich dieses Problem jetzt am besten an?

Link to comment
Share on other sites

15 answers to this question

Recommended Posts

Froxlor macht gar nichts in der nginx.conf...du meinst wenn dann einen Kunden-Vhost der via Cronjob neuerstellt wird. Allerdings weiss ich auch nicht genau was du mit "ben?tigt Path_Info" meinst...vielleicht gibst du uns ein Beispiel was genau du da machen musst?

Link to comment
Share on other sites

Oh mist sry, genau die vhosts waren das.

 

Also das hier ist die Meldung die ich bekomme:

Sie verwenden nginx als Webserver, jedoch verhindert die aktuelle Konfiguration eine erfolgreiche Installation. Bitte aktivieren Sie die PATH_INFO-Unterst?zung f?r PHP, Anleitungen sind hier verf?gbar. Sollten Sie nur einen Webspace gemietet haben, so wenden Sie sich bitte an Ihren Anbieter, damit dieser die fehlerhafte Konfiguration korrigiert.

 

 

Und das hier ist der Link an den ich verwiesen werde:

https://www.google.de/search?q=nginx+php+path_info

Link to comment
Share on other sites

Habe ich genau so gemacht, wie es da steht.

 

Habe die Datei "/etc/nginx/conf.d/php.conf" angelegt und dort folgendes eingetragen:

fastcgi_intercept_errors on;
# this will allow Nginx to intercept 4xx/5xx error codes
# Nginx will only intercept if there are error page rules defined
# -- This is better placed in the http {} block as a default
# -- so that in the case of wordpress, you can turn it off specifically
# -- in that virtual host's server block
 
location ~ \.php {
	fastcgi_split_path_info ^(.+\.php)(/.+)$;
	# A handy function that became available in 0.7.31 that breaks down 
	# The path information based on the provided regex expression
	# This is handy for requests such as file.php/some/paths/here/ 
 
	fastcgi_param  PATH_INFO          $fastcgi_path_info;
	fastcgi_param  PATH_TRANSLATED    $document_root$fastcgi_path_info;
 
        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  SCRIPT_NAME        $fastcgi_script_name;
        fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
        fastcgi_param  REQUEST_URI        $request_uri;
        fastcgi_param  DOCUMENT_URI       $document_uri;
        fastcgi_param  DOCUMENT_ROOT      $document_root;
        fastcgi_param  SERVER_PROTOCOL    $server_protocol;
 
        fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
        fastcgi_param  SERVER_SOFTWARE    nginx;
 
        fastcgi_param  REMOTE_ADDR        $remote_addr;
        fastcgi_param  REMOTE_PORT        $remote_port;
        fastcgi_param  SERVER_ADDR        $server_addr;
        fastcgi_param  SERVER_PORT        $server_port;
        fastcgi_param  SERVER_NAME        $server_name;
 
	fastcgi_pass   127.0.0.1:9000;
	fastcgi_index  index.php;
}

Dann will ich nginx neu starten und dann bekomme ich gesagt, dass die Zeile "location ~ \.php {" ung?ltig ist.

Also mehr machen, als wie es auf der Seite steht kann ich leider auch nicht.

Link to comment
Share on other sites

Wie im Beispiel beschrieben habe ich diese in der nginx.conf includiert.

Standartm??ig so: "include /etc/nginx/conf.d/*.conf;"

Habe es aber einmal die Zeile raus genommen und expliziet nur meine includiert mir "include /etc/nginx/conf.d/php.conf;".

 

Gleicher Fehler.

Link to comment
Share on other sites

naja, da steht z.B. "fastcgi_pass 127.0.0.1:9000;" - hast du denn das php interface ?berhaupt so eingerichtet? Froxlor macht das standardm??ig ?ber sockst - das m?sste also f?r jeden kunden vhost definert werden.

 

Wenn du magst, schau ich mir das auf deinem Server mal an und wir k?nnen gemeinsam das entsprechend anpassen, dass es funktioniert. Schau einfach bei uns im IRC vorbei, da bin ich die ganze Zeit

Link to comment
Share on other sites

Vielen Dank f?r die Hilfe und Entschuldigung f?r die sp?te R?ckmeldung.

 

Also, das ist zwar alles theoretisch korrekt, aber eine Sache macht alles kaputt. Laut http://trac.nginx.org/nginx/ticket/321ist das ein Feature und kein Bug... interessante Sichtweise, aber das hei?t das eine Location f?r PHP, die nach try_files steht einfach gar nicht geht (auch nicht mit dem "set-Trick"). Man m?sste die Werte vorher in einer Variable speichern, damit sie nicht in einem sp?teren try_files ?berschrieben werden (offenkundig werden die Variablen mit Ausnahme von dem Befehl set "byref" ?bergeben bzw. erst am Ende interpretiert). Das is wohl das Einzige mir Bekannte, dass in Nginx ein bissel Banane gel?st wurde... ansonsten kann ich ihn nur empfehlen.

 

Ich habe es letztlich aufgegeben und einfach cgi.fix_pathinfo in PHP aktiviert, bevor ich die Struktur von cron_tasks.inc.http.35.nginx_phpfpm.php komplett ?berarbeiten muss, und ich habe wenig Lust dazu sie bei jedem Froxlor-Update zu ?berpr?fen, ob sie sich wieder ge?ndert hat.

Link to comment
Share on other sites

Sch?nen guten Abend,

leider muss ich mich bez?glich dieses themas nocheinmal melden.

 

Ich habe mich jetzt wieder ein paar Stunden mit dem Thema besch?ftigt, bekomme es aber einfach nicht hin.

Was habe ich im Moment gemacht:

 

Ich habe in "/etc/nginx/fastcgi:params" den Eintrag hinzugef?gt und nginx neugestartet.

fastcgi_param PATH_INFO            $fastcgi_path_info;

Ich bekomme zwar keinen Fehler, allerdings ist der Eintrag PATH_INFO leer, wenn ich diesen ?ber folgende Anweisung aufrufe:

<pre><?php var_export($_SERVER)?></pre>

Ich habe keine Ahnung, wieso ich PATH_INFO nicht zum laufen bekomme.

 

 

PS:

Wenn ich in oben genannter Datei folgenden Eintrag hinzuf?ge, bekomme ich bei jeder .php Datei die Meldung "Access Denied":

fastcgi_param     PATH_TRANSLATED        $document_root$fastcgi_path_info;

Warum das so ist, kann ich mir nicht erkl?ren.

Link to comment
Share on other sites

Also bei mir funktioniert Folgendes am Anfang der fastcgi_params:

fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_param  PATH_INFO          $fastcgi_path_info;
fastcgi_param  PATH_TRANSLATED    $document_root$fastcgi_path_info;

Das Forum hier ist der Beweis, dass es klappt :)

Link to comment
Share on other sites

Ich habe auch Probleme mit den PATH_INFO. Sie ist leer... in den meisten F?llen, mit Ausnahme bei URLs wie "index.php/topic,1.0.html". Dann steht in PATH_INFO pl?tzlich "/topic,1.0.html". Das ist in sofern bl?d, dass unser Forum (Simple Machines Forum 2.x) dieses URL-Format als SEO-URLs verwendet und ich jetzt schon den Quellcode gehackt hatte, um bei leerer PHP_SELF auf SCRIPT_NAME zur?ckzufallen (verstehe nicht, warum jeder PHP_SELF will). Auf jeden Fall beeinflusst PATH_INFO wohl PHP_SELF, und ja... pl?tzlich ist es wohl nimmer leer (identisch mit PATH_INFO)...

 

Ich habe dann versucht die Ursache zu finden... das Problem ist, ich habe den "falschen" Code gefunden... aber ich finde keine M?glichkeit ihn in Froxlor zu ?ndern. Mein Server l?uft auf Nginx + php5-fpm und Froxlor legt f?r jede Domain folgendes Codesnipsel an:

        location ~ ^(.+?\.php)(/.*)?$ {
                try_files $1 = 404;

                include /etc/nginx/fastcgi.conf;
                fastcgi_split_path_info ^(.+\.php)(/.+)\$;
                fastcgi_param SCRIPT_FILENAME $document_root$1;
                fastcgi_param PATH_INFO $2;
                fastcgi_param HTTPS on;
                fastcgi_pass unix:/var/lib/apache2/fastcgi/Systemarena-baeckerprogramm.de-php-fpm.socket;
                fastcgi_index index.php;
        }

Ergo ?berschreibt "fastcgi_param PATH_INFO $2;" alles, das aus "include /etc/nginx/fastcgi.conf;" gesetzt wird. Aber ich finde keine Stelle, wo man beeinflussen k?nnte, was in diesem Snipsel reinkommt!

Kann mir einer helfen? Mit gefixter PATH_INFO sollten sowohl SEO-URLs laufen sowie das Forum auf HTTPS ohne Codehack laufen...

 

OS: Debian Wheezy + Wheezy-Backports

Nginx: 1.6.2-5~bpo70+1

PHP5-FPM: 5.4.39-0+deb7u2

Froxlor: 0.9.33.1-1

Link to comment
Share on other sites

in dem nginx cronfile m?sstest du das wenn anpassen: https://github.com/Froxlor/Froxlor/blob/master/scripts/jobs/cron_tasks.inc.http.35.nginx_phpfpm.php#L27
 
Funktioniert es denn, wenn du den location-block testweise mit diesem ersetzt?:

location ~ ^(.+?\.php)(/.*)?$ {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    include /etc/nginx/fastcgi.conf;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_path_info;
    try_files $fastcgi_script_name =404;
    fastcgi_pass unix:/var/lib/apache2/fastcgi/Systemarena-baeckerprogramm.de-php-fpm.socket;
    fastcgi_index index.php;
    fastcgi_param HTTPS on;
}
Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...