fastcgi Link Problem

Apache, Lighttpd, nginx, Cherokee
cirox
Posts: 212
Joined: 2006-05-08 23:20
Location: Berlin

fastcgi Link Problem

Post by cirox » 2006-10-26 01:34

Hallo,

ich habe folgendes Problem:

An für sich läuft die Geschichte (fastcgi + apache2 mit debian) ganz ordentlich, also ohne Fehler in Verbindung mit confixx über suphp (wird zusätzlich wegen Confixx geladen), php4 und php 5 selbstkompiliert. php4 und php 5 kann man umschalten. Jetzt ist mir aber bei einem Skript aufgefallen "http://www.phplinkdirectory.com/demo/" dass wenn man es installiert unter php4 (php5 läuft erstmal gar nicht die Installation, weil er an einer Stelle, wenn man auf "Next" klickt, es gar nicht weitergeht (irgendeine php.ini Einstellung oder Inkompatibilität?)), später bei Ausführung des Skripts, bei den Links im Skript, also z. Bsp. beim Link "Top Hits" immer ein /php/ dazwischensteht. So in der Art: http://www.domain.de/php/index.php. Das "php" ist aber völlig fehl am Platz und macht wahrscheinlich auch den Fehler. Der Fehler ist einfach mal eine kaputte Grafik und das er die eigentlichen Links nicht finden kann, also die Skriptseiten -> index.php o.ä., halt wegen dem "php" dazwischen (ergibt -> Seite nicht gefunden "404" Error).

Schalte ich auf php5, also nach der Installation sind die Links ok, das "php" dazwischen ist weg und die Grafik des Skripts funktioniert.

Ich poste mal meine config. Zu beachten ist, dass ich hier im Gegensatz zum Howto, nicht den Pfad /cgi-bin/... genommmen habe sondern einen virtuellen /php/.. da ansonsten sich keine CGI Skripte im cgi-bin Dir ausführen lassen.

In der vhost.conf steht zusätzlich und das muss auch so bleiben wegen confixx:

Code: Select all

ScriptAlias /cgi-bin/ /var/www/webx/html/cgi-bin/
/etc/apache2/mods-enabled/fastcgi.conf:

Code: Select all

FastCgiWrapper /usr/lib/apache2/suexec2
FastCgiServer /var/www/php-fcgi-scripts/web0/php-fcgi-starter -user web0 -group web0

AddHandler php-fastcgi .php
AddHandler php4-fastcgi .php4
 
<Location /php/php-fcgi-starter>
        SetHandler fastcgi-script
        Options +ExecCGI
</Location>
<Location /php/php4-fcgi-starter>
        SetHandler fastcgi-script
        Options +ExecCGI
</Location>
 
Action php-fastcgi /php/php-fcgi-starter
Action php4-fastcgi /php/php4-fcgi-starter
 
AddType application/x-httpd-php .php
AddType application/x-httpd-php .php4
/etc/apache2/confixx_vhosts/*.conf

Code: Select all

ScriptAlias /php/ /var/www/php-fcgi-scripts/webx/
        <Directory "/var/www/php-fcgi-scripts/webx">
                AllowOverride None
                Options +ExecCGI -MultiViews -Indexes
                Order allow,deny
                Allow from all
        </Directory>
suPHP_RemoveHandler .php
suPHP_Engine off
AddHandler php4-fastcgi .php4
AddHandler php-fastcgi .php
unter "/var/www/php-fcgi-scripts/webx/*" befindet sich der Starter (2mal einer für php4 und einer für php5

Der Pfad "php" existiert wie gesagt nicht im "htmlroot" der einzelnen vhosts.

Unter suphp (php 4.3) funktioniert das mit dem Skript sofort.

Werden noch Infos gebraucht?
Was könnte der Fehler sein?
Könnte der "alias" das Problem sein?
Warum nimmt man überhaupt den Alias "php" oder "cgi-bin" (wie im "Howto", wenn die Geschichte, also fastcgi -> php, nicht im cgi-bin Verzeicnis abläuft, oder wie im meinen Fall in /php/"? Klar der Alias steht für "/var/www/php-fcgi-scripts/webx", verstehe ich aber trotzdem nicht.

gruß cirox

cirox
Posts: 212
Joined: 2006-05-08 23:20
Location: Berlin

Re: fastcgi Link Problem

Post by cirox » 2006-11-06 01:35

Hallo,

so gelöst :)

Code: Select all

cgi.fix_pathinfo=1
Bedeutet dass jetzt, dass die Variable in der php.ini grundsätzlich gesetzt sein sollte?

gruß cirox

PS: Also grundsätzlich sollte man laut php.ini ja die Skripte fixen, aber was für Auswirkungen hat die Variable eigentlich auf alle Skripte wenn diese gesetzt ist?

Code: Select all

; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI.  PHP's
; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok
; what PATH_INFO is.  For more information on PATH_INFO, see the cgi specs.  Setting
; this to 1 will cause PHP CGI to fix it's paths to conform to the spec.  A setting
; of zero causes PHP to behave as before.  Default is zero.  You should fix your scripts
; to use SCRIPT_FILENAME rather than PATH_TRANSLATED.
Anscheinend hat das Skript halt die Variable "SCRIPT_NAME" ausgelesen und die stand auf "/php/index.php". Schalt ich jetzt wie beschrieben um (cgi.fix_pathinfo=1), dann steht unter "SCRIPT_NAME" ->"info.php" Also richtig.