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

  • Thread starter Thread starter server4downs
  • Start date Start date
In den Logs sind keine Fehler oder Hinweise. Und anstatt das der Script ausgeführt wird, wird im Browserfenster einfach nur <? phpinfo(); ?> (Also der Script selber unausgeführt) angezeigt, also der Inhalt der Datei.
 
mod-exi said:
In den Logs sind keine Fehler oder Hinweise. Und anstatt das der Script ausgeführt wird, wird im Browserfenster einfach nur <? phpinfo(); ?> (Also der Script selber unausgeführt) angezeigt, also der Inhalt der Datei.
Irgendwas macht ihr falsch. Ferndiagnose mit so wenigen Infos ist immer bissle schwer ;)
Wahrscheinlich hast du nicht alle Logs durchgeschaut...
Aber mich nervt das Hinterherhaken hier irgendwie ein bisschen.. ich habe die Geschichte auf mehrereren versch. Maschinen am Rennen.
Informiert euch doch einfach mal, wie ihr PHP als CGI im Apachen zu inkludieren habt. Dieses HowTo richtet sich eher an Fortgeschrittene und behandelt dieses Thema nur nebenbei.
Die Quellcodeänderung (an den PHP-Sources) hat somit nichts mit diesem Thema zu tun.
Ihr könntet auch unveränderte Sourcen verwenden, nur bestände dann das Problem keine open_basedir verwenden zu können.
Ich bitte dies zu berücksichtigen.
 
Last edited by a moderator:
Hallo zusammen

ich habe das Problem, dass immer

checking whether to enable LIBXML support... yes
checking libxml2 install dir... no
checking for xml2-config path...
configure: error: xml2-config not found. Please check your libxml2 installation.

kommt. So weit so gut, dachte ich mir, dann installiere ich es halt, aber wenn ich es installieren will, kommt dass ich schon die neuste version habe.

apt-get install libxml2
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut... Fertig
libxml2 ist schon die neueste Version.
0 aktualisiert, 0 neu installiert, 0 zu entfernen und 44 nicht aktualisiert.

Wie kann ich das Problem umgehen?
 
Danke für den Tipp. Nun kommt aber leider

v444:~# apt-get install libxml2-dev
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut... Fertig
Einige Pakete konnten nicht installiert werden. Das kann bedeuten, dass
Sie eine unmögliche Situation angefordert haben oder dass, wenn Sie die
instabile Distribution verwenden, einige erforderliche Pakete noch nicht
kreiert oder aus Incoming herausbewegt wurden.

Da Sie nur eine einzige Operation angefordert haben ist es sehr wahrscheinlich,
dass das Paket einfach nicht installierbar ist und eine Fehlermeldung über
dieses Paket erfolgen sollte.
Die folgenden Informationen helfen Ihnen vielleicht, die Situation zu lösen:

Die folgenden Pakete haben nichterfüllte Abhängigkeiten:
libxml2-dev: Hängt ab: libxml2 (= 2.6.16-7) aber 2.6.23.dfsg.1-0.1 soll installiert werden

Wie genau soll ich da jetzt vorehen? Hoster kontaktieren oder was?
 
Huschi said:
Fang mal mit den 44 zu aktualisierenden Paketen an.
apt-get upgrade

huschi.

Danke für den Tipp. Hat leider nichts gebracht.

apt-get install libxml2
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut... Fertig
libxml2 ist schon die neueste Version.
0 aktualisiert, 0 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.

Ich denke es liegt an Netclusives Updateserver oder so. Aber der Server dient ja sowiso nur als Testserver, da ist es nicht so wichtig.
 
Lintu said:
apt-get install libxml2
Hallo.
Meist denken wir uns hier etwas dabei, wenn wir etwas posten... ;)
Wie wäre es, wenn du Guins Tipp befolgst?
Bei solchen Fehler fehlt oftmals die dev(el) Version.
libxml2-dev

Also, dann mach doch mal
Code:
apt-get install libxml2-dev
 
Das habe ich ja auch schon versucht und geschriben, dass es nicht funktioniert

Edit: ich benutze Debian als OS
 
Last edited by a moderator:
Hallo,

konnte das hier bereits gelöst werden:

test022 said:
Bitte nicht hauen nach dem ich Eintrag in httpd.conf geändert habe, kriege ich php5 dateien zum Donload angeboten.

Ich habe leider exakt dasselbe Problem auf einem Debian 3.1 sarge System, PHP 4.3.10-16 als mod, PHP5 laut Anleitung als CGI, Apache 2.0.54
 
tanjix said:
Ich habe leider exakt dasselbe Problem auf einem Debian 3.1 sarge System, PHP 4.3.10-16 als mod, PHP5 laut Anleitung als CGI, Apache 2.0.54
Hallo,
ich will nun nochmals darauf aufmerksam machen, dass es sich hierbei lediglich um ein HowTo handelt, welches besonders auf den Patch hin spezialisiert wurde, in welchem sehr viel Arbeit und Testing steckt, die Einbindung in den Apachen ist sozusagen nur da, um das HowTo komplett zu machen.. sollte die hier angesprochene Lesergruppe ohne HowTo schaffen.
Wenn man keine Ahnung hat, wie man die CLI-Version oder CGI-Version oder wie auch immer man sie nun nennen will in das System einbindet, so ist das HowTo sicherlich falsch für dich.
Es gibt sicherlich hunderte Threads und HowTos im Netz, welche die Einbindung von PHP als CGI behandeln.
Ich will jetzt hiermit nicht behaupten, dass ich ein "Gott" in Sachen PHP-Installation bin und nie Fehler mache.. nur richtet sich das HowTo wirklich an ein "anderes Publikum" (um es so auszudrücken).
Ich habe das HowTo mit einer weiteren Warnmeldung erweitert.

So, das nur vorab...
Ich kann es leider wirklich nicht verstehen, dass man auf ein HowTo nur "geht bei mir auch net" antworten kann, ohne jegliche Angaben, wie z.B. Logfileauszüge zu posten.
 
Hallo,

ich formuliere das ganze eben anders. Die PHP als CGI-Installation funktioniert technisch einwandfreim .php5 Dateien werden mit PHP5 ausgeführt.

Ich will jedoch folgendes.

Mein Server ist ein Confixx-Server (3.1.2). PHP5 soll nur in einem bestimmten Ordner eines Confixx Users aktiv werden. Alles andere mit PHP4.

Habe dazu eine <Directory "/var/www/confixx/html/test"> ... </Directory> Direktive erstellt.
Das ganze funktioniert im Doc-Root von Confixx selbst (also dort wo die Daten von Confixx liegen) wunderbar, nicht aber jedoch, wenn ich die Directory-Direktive auf den Pfad /var/www/web1/html/test ändere.
Dort wird mir dann die .php Datei zum Download angeboten.

Meine Direktive sieht wie folgt aus:

ScriptAlias /php5rocks /usr/local/php5/bin
<Directory "/var/www/web0/html/test">
AllowOverride None
AllowOverride Indexes AuthConfig Limit FileInfo
Options +ExecCGI +FollowSymLinks +FollowSymLinks +Includes +MultiViews
Action php5-cgi /php5rocks/php
AddType php5-cgi .php
</Directory>

Wenn ich die so speichere und den Apache restarte, steht im error.log:

[Tue May 09 13:28:49 2006] [warn] Cannot get media type from 'php5-cgi'
[Tue May 09 13:28:49 2006] [warn] Cannot get media type from 'php5-cgi'
[Tue May 09 13:28:49 2006] [warn] Cannot get media type from 'php5-cgi'
[Tue May 09 13:28:49 2006] [error] [client 84.16.225.253] Premature end of script headers: php

Ändere ich die Direktive in (wie von Dir vorgeschlagen):

ScriptAlias /php5rocks /usr/local/php5/bin
<Directory "/var/www/web0/html/test">
AllowOverride None
AllowOverride Indexes AuthConfig Limit FileInfo
Options +ExecCGI +FollowSymLinks +FollowSymLinks +Includes +MultiViews
Action php5-cgi application/php5rocks/php
AddType application/php5-cgi .php
</Directory>

dann werden mir .php Dateien zum Download angeboten und niht mit PHP5 ausgeführt.

Vielleicht kannst Du mir ja nun (oder auch gerne jemand anderes) weiterhelfen?
 
Hallo.
Schau dir das HowTo mit der Apache-Stelle mal ganz genau an.
Dann wirst du sicherlich feststellen, dass du hier was falsch machst ;)

Ich beziehe mich auf:
<Directory "/usr/bin/php5">
AllowOverride None
Options +ExecCGI +FollowSymLinks
Order allow,deny
Allow from all
</Directory>
Verstehst du, was ich meine?

In deinem Falle müsstest du dann /usr/local/php5 dort angeben.
Du hast da was falsch verstanden.
Du musst praktisch das Ausführen ja zulassen und somit dann das Directory nehmen, in welches du PHP5 installiert hast, nicht irgendein webX.
Einfach wie von mir übernehmen und dann nur bei den entsprechenden Kunden
Code:
 ScriptAlias /php5rocks /usr/bin/php5 
 Action php5-cgi /php5rocks/php
  AddType php5-cgi .php
reinkloppen.
Aber wie gesagt.. das passt hier nicht wirklich rein.
 
Hallo,

ich fürchte, wir reden aneinander vorbei oder ich verstehe Deine Antwort nicht.

Mein Ziel ist, dass z.B. der Kunde web0 im /test Ordner seine .php-Dateien als PHP5 ausgeführt bekommt. .php-Dateien, die nicht in /test liegen soll der Server mit PHP4 abarbeiten.

Um das zu realisieren, habe ich die genannte Directory-Direktive eingebaut. Ergebnisse und Fehlermeldungen stehen im Thread weiter oben.

Falls Du mich doch richtig verstanden hast, habe ich Deine Antwort leider nicht verstanden.
Vielleicht kannst Du mir daher sagen, was ich wo eintragen muss, damit es klappt.

Danke für Deine Zeit!
 
Ich habe dich schon verstanden.
Wieso machst du es dann nicht so?

Code:
 <Directory "/usr/local/php5">
   AllowOverride None
   Options +ExecCGI +FollowSymLinks
   Order allow,deny
   Allow from all
   </Directory>
und
Code:
ScriptAlias /php5rocks /usr/local/php5/bin
 <Directory "/var/www/web0/html/test">
php_admin_value engine off
 Action php5-cgi /php5rocks/php
 AddType php5-cgi .php
 </Directory>

Les dir ansonsten da einfach mal ein wenig Wissen an. Ist mir zu kompliziert das jetzt alles zu erklären.
 
Danke!

Und diese Konstellation führt wieder zu:

[Tue May 09 22:38:34 2006] [warn] Cannot get media type from 'php5-cgi'
[Tue May 09 22:38:34 2006] [warn] Cannot get media type from 'php5-cgi'
[Tue May 09 22:38:34 2006] [warn] Cannot get media type from 'php5-cgi'
[Tue May 09 22:38:34 2006] [error] [client 84.16.225.253] Premature end of script headers: php
[Tue May 09 22:38:35 2006] [warn] Cannot get media type from 'php5-cgi'
[Tue May 09 22:38:35 2006] [warn] Cannot get media type from 'php5-cgi'
[Tue May 09 22:38:35 2006] [warn] Cannot get media type from 'php5-cgi'
[Tue May 09 22:38:35 2006] [error] [client 84.16.225.253] Premature end of script headers: php
 
Das war ja auch nur ein Lösungsansatz. Getestet habe ich das so ja nicht. "Premature end of script headers" hat meist etwas mit suexec zu tun.
Schau dir da mal die Logs an.
Du musst dir wirklich mal ein paar HowTos und Anleitungen und event. mal die Apache-Doku reinziehen und einfach "Learning by doing" betreiben, dann kriegst du das schon hin.
 
Hallo,

danke für Den Tipp mit suexec. Da steht in der Tat was drin:

[2006-05-09 22:53:28]: uid: (1147/web0) gid: (1147/1147) cmd: php
[2006-05-09 22:53:28]: command not in docroot (/usr/local/php5/bin/php)

Hast Du hier für mich auch noch einen Tipp?

Danke!
 
Jap. Suexec neu kompilieren:
Oder das Binary wo anders hinklatschen.
 
Lösung für media type Problem

Das Problem mit dem media / mime types wird auf gelöst, indem man folgende konformere Types setzt


ScriptAlias /php5-cgi /srv/www/php5
Action application/php5-cgi /php5-cgi/php
AddType application/php5-cgi .php5

(also mit "application/"...)

Grüße,

AH
 
Back
Top