[HowTo] PHP4/PHP5 als CGI - gepatcht (deutsches HowTo)

  • Thread starter Thread starter server4downs
  • Start date Start date
Hey Free :)

Thx für deine Antwort. :D

Mit deiner Config gibt der Browser wieder die 500er Meldung aus.

Im Error-Log steht folgendes:
Code:
[Wed Oct 18 19:42:00 2006] [error] [client 80.238.131.195] Premature end of script headers: php

Im Suexec-Log:
[2006-10-18 19:42:00]: uid: (10002/[userdesdomains]) gid: (10001/10001) cmd: php
[2006-10-18 19:42:00]: command not in docroot (/usr/bin/php5/php)

Hmmmm, hilft vieleicht mein ganzes vhost.conf weiter:
Code:
# open_basedir settings
<Directory "/var/www/vhosts/domain.info/httpdocs">
php_admin_value open_basedir "/var/www/vhosts/domain.info/httpdocs:/var/www/vhosts/domain.info/g2data:/tmp:/usr/bin:/usr/sbin:/usr/share/gallery2:/usr/share/typo3_src-4.0:/usr/share/fonts/trnts/truetype/msttcorefonts"
</Directory>

# redirects
Redirect /quiz https://www.domain.info/quiz
Redirect /mail https://www.domain.info/mail
Redirect /phpmyadmin https://www.domain.info/phpmyadmin

# aliases
Alias /gallery2multisite /usr/share/gallery2
Alias /typo3_src-4.0 /usr/share/typo3_src-4.0
Alias /awstats /usr/share/awstats/wwwroot/cgi-bin

<Directory "/usr/bin/php5">
AllowOverride None
Options +ExecCGI +FollowSymLinks
Order allow,deny
Allow from all
</Directory>
ScriptAlias /php5-cgi /usr/bin/php5
Action application/php5-cgi /php5-cgi/php
AddType application/php5-cgi .php5

Mein /etc/apache2/apache2.conf würde kaum was helfen?

Kann ich sonst noch irgendwelche Infos geben?

Gruss und nochmals ein riesen Dankeschön,
Dawn
 
Hallo Dawn,

dieser Fehler verwundert mich ein wenig, da du ja

dawn said:
-D AP_DOC_ROOT="/usr/bin/php5"

angegeben hast.

Was vielleicht noch sein könnte ist, dass

dawn said:
-D AP_HTTPD_USER="www-data"

nicht richtig ist...

Hast du es mal mit 'wwwrun' getestet?

Sorry aber kommt mir grad alles ein wenig spanisch vor.

Lieben Gruß
Free
 
Code:
 suexec2 -V
 -D AP_DOC_ROOT="/usr/bin/php5"
 -D AP_GID_MIN=100
 -D AP_HTTPD_USER="www-data"
 -D AP_LOG_EXEC="/var/log/apache2/suexec.log"
 -D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
 -D AP_UID_MIN=100
 -D AP_USERDIR_SUFFIX="public_html"

Macht eigentlich einen guten Eindruck. Also ich bin mir sicher das der apache-user "www-data" ist. Ich habe im Verzeichnis /usr/share Squirrelmail installiert welches unter "www-data" läuft. Sonst würde das ja nicht funktionieren?

Was ich noch bemerkt habe: Ich hatte /usr/bin/suexec2 in suexec umbenannt gehabt, da ich dachte das könnte was ausmachen. Aber der fehler bleibt auch beim umbenennen in suexec2 gleich.

Kann es sein, das apache2 ein anderes suexec verwendet als das welches sich in /usr/sbin/suexec2 befindet?
Wenn ich den ganzen Server nach suexec* absuche finde ich suexec auch noch an anderen Orten:
/usr/lib/apache2/suexec2
/opt/psa/suexec

EDIT: Ausserdem habe ich auch folgendes gesehen:
/etc/apache2/mods-available/suexec.load
/etc/apache2/mods-enabled/suexec.load

Wo genau wird definiert welches suexec(2) verwendet werden soll? *dummfrag*
 
Last edited by a moderator:
Hi Dawn,

du schreibst:
Code:
/usr/bin/suexec2

es muss allerdings
Code:
/usr/[B]s[/B]bin/suexec2
lauten.

Nach dem compilieren von suexec soll ja
Code:
cp suexec /usr/sbin/suexec2
ausgeführt werden.

Und den
Code:
chmod 4755 /usr/sbin/suexec2
nicht vergessen!

Lieben Gruß
Free
 
EDIT: Ausserdem habe ich auch folgendes gesehen:
/etc/apache2/mods-available/suexec.load
/etc/apache2/mods-enabled/suexec.load

Weiss nicht ob du mein EDIT noch gesehen hast...

Sorry das war ein Tippfehler. Meine schon /usr/sbin/suexec2.

Die Rechte für suexec2 sind bei mir:
Code:
ls -l /usr/sbin/suexec2
-rwsr-xr-x  1 root root 48619 2006-10-18 10:50 /usr/sbin/suexec2

Das sollte schon stimmen, denke ich mal.

Gruss,
Dawn
 
Hi Dawn,

also das muss irgendwas OS spezifisches sein.

Ich selbst habe kein Debian im Einsatz und kann deswegen auch nur dunkles Halbwissen dazu schildern...

Soweit ich weiß (?) gibt es bei Debian die Möglichkeit sich mit 'apache2 -V' ein paar Informationen zum Apache anzeigen zu lassen.

Unter Anderem auch den
Code:
-D SUEXEC_BIN="...."

Vielleicht hilft dir das ;)
Ansonsten denke ich sollten sich unsere Debian Spezis mal zu Wort melden.

Lieben Gruß
Free
 
Code:
apache2 -V
Server version: Apache/2.0.54
Server built:   Jul 28 2006 09:04:55
Server's Module Magic Number: 20020903:9
Architecture:   32-bit
Server compiled with....
 -D APACHE_MPM_DIR="server/mpm/prefork"
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_SYSVSEM_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D HTTPD_ROOT=""
[B] -D SUEXEC_BIN="/usr/lib/apache2/suexec2"[/B]
 -D DEFAULT_PIDLOG="/var/run/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_LOCKFILE="/var/run/accept.lock"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="/etc/apache2/mime.types"
 -D SERVER_CONFIG_FILE="/etc/apache2/apache2.conf"

Ich glaub dann war meine Annahme nicht mal so schlecht ;) Nur wo kann ich diesen Wert setzen (SUEXEC_BIN), ich finde ihn nirgends im /etc/apache2/apache2.conf? So wie es ausschaut wird ja das "falsche" suexec2 genutzt.

Code:
/usr/lib/apache2/suexec2 -V
 -D AP_DOC_ROOT="/var/www"
 -D AP_GID_MIN=100
 -D AP_HTTPD_USER="www-data"
 -D AP_LOG_EXEC="/var/log/apache2/suexec.log"
 -D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
 -D AP_UID_MIN=100
 -D AP_USERDIR_SUFFIX="public_html"

Das würde doch einiges erklären nicht?
 
Last edited by a moderator:
Jipiiiiiiiiii :D :D :D :D Ich habs geschafft... *wirklicheinfettesbieraufmach*

Die Lösung war eigentlich ganz einfach (wie immer wenn mans weiss):
Entweder müsste man apache2 selber kompilieren und die Konstante setzen (war mir aber echt zu heikel) oder man muss mittels

Code:
mv /usr/lib/apache2/suexec2 /usr/lib/apache2/suexec2.bak

umbennen der verwenden suexec2 und kopieren der neu kompilierten

Code:
cp /usr/sbin/suexec2 /usr/lib/apache/suexec2

suexec2 executalbe apache2 "austricksen".

Ich habe vorsichtshalber noch per

Code:
/etc/init.d/apache2 restart

apache2 neu gestartet.

Besten Dank für eure grossartige Hilfe, das ist echt nicht selbstverständlich und ich denke auch nicht das ichs ohne euch hingekriegt hätte.

Gruss und big THX,
Dawn
 
Hallo Dawn,

das ist ja super, dass es jetzt doch noch geklappt hat!

Sorry, dass wir nicht sofort auf die Lösung kamen, aber wie gesagt:
Ich arbeite nicht mit Debian....

Freue mich, dass es bei dir geklappt hat und hoffe du bist zwischendurch nicht das ein oder andere Mal verzweifelt ;)

Also dann viel Spass mit PHP4 _UND_ PHP5 ;)

Lieben Gruß
Free
 
Jo bei Debian (insbesondere im Zusammenspiel mit Plesk) scheint noch öfters mal alles ein wenig anders zu sein. Ich frage mich auch oft ob Plesk wirklich auf Debian ausgelegt ist....... Naja.....

Ein paar mal hatte ich echte Krisen, insbesondere nach nur 2h schlaf ;) Aber ihr habt mir echt super weitergeholfen, und die Lücken geschlossen in welchen ich nicht mehr weiterkam. So lernt man ja auch was...

Freu mich wirklich riesig das nun alle so funzt wie es sollte ;) Mal kucken ob ich MySql5 in Angriff nehme.. ;) Kennst nicht zufällig ein Tutorial? ;) *grins*

Schönen Abend noch :)
Dawn
 
Hallo,

Wir haben das so gemacht, wie die Anleitung, hat zwar nicht direkt geklappt.
Sprich immer irgentwelche fehler! Nur jetzt geht es endlich!!

Wie kann man jetzt noch hingehen und sagen
der ordner

/test bleibt bei PHP4
/test2 da kommt php5


also am besten per .htaccess müsste doch gehen oder?
 
hi,

habe jetzt ne .htaccess gemacht mit dem inhalt:

Action application/php5-cgi /php5-cgi/php
AddType application/php5-cgi .php

jetzt sind alle unterordner mit php5 geschaltet :)


/test/.htaccess
/test/123 <-- php5
/test/456 <-- php5

/123/ <-- php4

:)

und es klappt!!!
 
ich wollte mich rechtherzlich bei dir bedanken.. funktioniert wirklich super..

OS = Debian 3.1
Apache Version: 1.3.33-6sarge3
PHP4 und PHP5 scheinen zu funktionieren:

also

index.php spuckt mir PHP Version 4.3.10-18 aus.
index.php5 spuckt mir PHP Version 5.2.0 aus.

Alles super. :) :) :)

p.s:

ich musste noch das Action Modul laden unter

/etc/apache/modules.conf :

Code:
LoadModule action_module /usr/lib/apache/1.3/mod_actions.so
 
@Freel@ncer14:

Ich habe Suexec nun auch neu kompiliert, bei mir funktionieren aber folgende Befehle nicht:

cp suexec /usr/sbin/suexec2
und
chmod 4755 /usr/sbin/suexec2

Ich erhalte ein "Permission denied", obwohl ich als root angemeldet bin und die suexec2 den owner/die group root hat. Chmod ist auf 4755.

Auch Dawn's Vorgehensweise mit mv funktionier nicht
 
Last edited by a moderator:
Kommt bei beiden Befehlen nur "Permission Denied"?
Kann ich mir kaum vorstellen.

Ansonsten benutze doch mal den Midnight-Commander. Damit sollte es sicherlich gehen.
Einfach per
Code:
mc
öffnen.
 
Danke für den Tipp!

Aber mit dem Midnight-Commander funktioniert es leider auch nicht.


Nein, es kommt nicht nur "Permission Denied", sondern

cp: cannot create regular file `/usr/sbin/suexec2': Permission denied
bzw.
chmod: changing permissions of `/usr/sbin/suexec2': Operation not permitted
 
Last edited by a moderator:
Morgen,

Leider kommt bei mir auch nur der Error 500.


Bin die ganzen Seiten durchgegangen. Hab alles ausprobiert aber leider ohne

Erfolg :(


In der suexec.log steht

Code:
[2007-01-06 04:55:16]: uid: (647/web1) gid: (647/647) cmd: php
[2007-01-06 04:55:16]: command not in docroot (/usr/bin/php5/php)
[2007-01-06 05:13:13]: uid: (647/web1) gid: (647/647) cmd: php
[2007-01-06 05:13:13]: command not in docroot (/usr/bin/php5/php)


In der error log von apache

Code:
Premature end of script headers: php


Ich hab ein Apache2 mit Php4 und php5 (das ja nicht funktioniert)

Debian Sarge und Confixx.
 
Bin die ganzen Seiten durchgegangen. Hab alles ausprobiert aber leider ohne

Erfolg :(
Das glaube ich dir leider nicht!
Du musst suexec neukompilieren!
Am besten du machst es so:
Hast du wahrscheinlich übersehen.

Wie bereits im Thread schon mal als Tip gegeben:
Zum kurzen Testen der Installation darf man ruhig mal kurz die suexec-Anweisung aus der vhost-Datei des Apachen auskommentieren... dann laufen die Scripte zwar als Apache-User, aber man kann somit testen ob die restliche Installation geklappt hat.
 
Back
Top