• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst] php neukompilieren mit zlib Option

Nucles

Newbie
Hallo!

Ich habe ein großes Problem!
I hoste bei 1&1 und besitze da eigenen Server mit SuSE 9.1, Apache2, PHP 4.3.4, MySQL und Plesk 7.5 Reloaded als Konfigurationstool für den Server
Das Problem ist, dass im Auslieferungszustand wurde php ohne zlib Unterstützung kompiliert. Da ich aber ein CMS-System benutzen möchte, das ohne zlib nicht funktioniert, ist zlib Lebenswichtig!

Die Frage ist: kann man nachträglich PHP so neukompilieren, dass es keine Auswirkung auf Apache und auf das ganze System hat, aber zlib benutzt?

Für jeden Hinweis wäre ich sehr dankbar!
 

nbkr

Guru
PHP lässt sich auf zwei Arten kompilieren. Als Apachemodul und als CGI Version. Beide lassen sich neu kompilieren. Dann funktioniert natürlich das YaST update nicht mehr, bzw. es kann Schwierigkeiten geben. Ein Anleitungen wie man PHP als CGI kompiliert findet sich unter:

http://texte.benjaminfleckenstein.de/wissen
 
OP
Nucles

Nucles

Newbie
ja, ok, yast habe ich nicht vor zu benutzen. Ich will nur nicht bei der neukompilation von php apache einstellungen beschädigen. Bei mir läuft php ohne cgi.
In deinem Link sind leider keine Infos über kompilation von php als apache als modul
 

nbkr

Guru
Geht im Prinzip genauso - nur brauchst Du noch eine zusätzliche Option. --with-axirgendwas. Dann wird statt der CGI Version ein Modul erstellt. Such mal bei google nach PHP kompilation apache dann wirst Du sicher fündig.
 
OP
Nucles

Nucles

Newbie
Danke nbkr für Deine Hinweise!

Wenn ich dich richtig verstanden habe kann man doch ein paar Optionen des Typs --with-irgendwas zu PHP hinfügen.
Zur Zeit sieht bei mir so aus:
Code:
'./configure' '--prefix=/usr' '--datadir=/usr/share/php' '--mandir=/usr/share/man' '--bindir=/usr/bin' '--libdir=/usr/share' '--includedir=/usr/include' '--sysconfdir=/etc' '--with-_lib=lib' '--with-config-file-path=/etc' '--with-exec-dir=/usr/lib/php/bin' '--disable-debug' '--enable-inline-optimization' '--enable-memory-limit' '--enable-magic-quotes' '--enable-safe-mode' '--enable-sigchild' '--disable-ctype' '--disable-session' '--without-mysql' '--disable-cli' '--without-pear' '--with-openssl' '--with-apxs2=/usr/sbin/apxs2-prefork' 'i586-suse-linux'
wie Du siehst ist leider zlib nict dabei.
Ich verde mal bei google weiter Suchen
 

nbkr

Guru
Du kannst einfach den gleichen String nehmen und ncoh "--with-zlib" dran hängen, dann sollte es gehen.
 
OP
Nucles

Nucles

Newbie
also du meinst ich sollte zu dem String einfach --with-zlib hinfügen und das war's?
Das komischste ist, dass ich die datei "configure" auf meindem System nicht finden kann
 

nbkr

Guru
Theoretisch sollte das so gehen, praktisch muss man es testen, nicht alle Optionen werden gehen, denn auf dem system müssen auch die entsprechenden Pakete installiert sein (with-zlib wird z.B. nicht gehen wenn keine zlib installiert ist). Die configure Datei wird von den PHP Sourcen mitgeliefert (die musst Du natürlich haben, sonst kannst Du das ja nicht neu kompilieren).
 
OP
Nucles

Nucles

Newbie
das war natürlich dumm von mir, denn "configure" Datei wird doch mit Source-Code von php mitgeliefert...
Also, am besten denke ich mir gleichen Systemaufbau auf heimischen localhost mit Apache und php aufbauen, und da zu testen. Sonst glaube ich kann bei solchen kritischen Einstellungen viel schief gehen...
 

nbkr

Guru
Nö, kann eigentlich nicht - die meisten Fehler entstehen beim ./configure bzw. beim make aufruf. Da kann noch nix passieren. Erst wenn "make install" läuft werden Dateien ins System kopiert.
 
OP
Nucles

Nucles

Newbie
ja, aber um --with-zlib zu dem oben genannten String hinzufügen brauche ich ein Aufruf von ./configure aus dem Source Paket, danach ist php konfiguriert, aber nicht upgedatet. Beim "make" und anschließend "make install", kompiliere ich und installiere davor mit ./configure eingestellte Optionen.
Meine ich es richtig?
 
OP
Nucles

Nucles

Newbie
Es ist erstaunlich, aber bei der Ausführung von:
Code:
'./configure' '--prefix=/usr' '--datadir=/usr/share/php' '--mandir=/usr/share/man' '--bindir=/usr/bin' '--libdir=/usr/share' '--includedir=/usr/include' '--sysconfdir=/etc' '--with-_lib=lib' '--with-config-file-path=/etc' '--with-exec-dir=/usr/lib/php/bin' '--disable-debug' '--enable-inline-optimization' '--enable-memory-limit' '--enable-magic-quotes' '--enable-safe-mode' '--enable-sigchild' '--disable-ctype' '--disable-session' '--without-mysql' '--disable-cli' '--without-pear' '--with-openssl' '--with-apxs2=/usr/sbin/apxs2-prefork' 'i586-suse-linux'
fehlt dem php 4.3.4 die Datei apxs2-prefork im Pfad /usr/sbin/
Es gibt in Wirklichkeit keine Datei auf dem Server mit dem oder ähnlichen Namen.

So wie ich es verstehe ist der apxs2 bei Apache für die Installation von Modulen verantwortlich.

Jetzt frage ich mich, wie haben die Leute von 1&1 meinen Server mit oben dargestallten Optionen installiert, wenn sie nachträglich nicht benutzt werden können. Oder schmeißen sie einfach einen Image drauf und war's das?

Für jeden Hinweis bin ich dankbar.
 

nbkr

Guru
Die Leute von 1&1 schmeißen da images drauf. Die kompilieren nichts. Abgesehen davon hätten die ja das fertige (aber veraltete) RPM genommen. Wenn Du selbst kompilierst brauchst Du natrülich alle Pakete die PHP mit einbinden soll. Wenn Du apt hast kannst Du ja mal nach axps suchen vielleicht ist es da dabei, allerdings kann ich Dir bei dem Modul nicht wirklich helfen - brauchst Du das überhaupt als Modul?
 
OP
Nucles

Nucles

Newbie
nbkr schrieb:
Die Leute von 1&1 schmeißen da images drauf. Die kompilieren nichts. Abgesehen davon hätten die ja das fertige (aber veraltete) RPM genommen. Wenn Du selbst kompilierst brauchst Du natrülich alle Pakete die PHP mit einbinden soll. Wenn Du apt hast kannst Du ja mal nach axps suchen vielleicht ist es da dabei, allerdings kann ich Dir bei dem Modul nicht wirklich helfen - brauchst Du das überhaupt als Modul?

Hallo nbkr!
Es ist unglaublich wie schnell und kompeten du auf meine Fragen reagierst. Ich danke dir dafür!

Also axps ist nicht dabei, hast du vielleicht apxs gemeint? Es ist gar nichts dabei der Art "*apxs*"...

Ich weiss nicht genau ob ich den Modul brauche. Weil der Server über Plesk als Config-Tool configuriert wird, ist es nicht auszuschließen, dass es mal irgend wann von diesem Tool gebraucht wird. So genau weiss ich das nicht...

Ich habe versucht php ohne apxs Unterstützung zu configurieren, allerding stollpert der ./configure bei anderer Option:

[/code]
Configuring extensions
checking for OpenSSL support... yes
checking for pkg-config... no
configure: error: Cannot find OpenSSL's <evp.h>
Code:
Wie ich verstehe sind auf dem Server überhaupt keine Distributionen drauf...  :( 
Die muss ich alle wohl selber besorgen...
Was sagst Du dazu?
 

nbkr

Guru
Nucles schrieb:
Hallo nbkr!
Es ist unglaublich wie schnell und kompeten du auf meine Fragen reagierst. Ich danke dir dafür!

Freut mich wenn ich helfen kann.

Also axps ist nicht dabei, hast du vielleicht apxs gemeint? Es ist gar nichts dabei der Art "*apxs*"...

Ja, meinte mit apxs - das ist normalerweise bei den Apache Quellen dabei. Die kannst Du von apache.or runterladen - allerdings muss das dann die gleiche Version sein wie Du installiert hast.

Ich weiss nicht genau ob ich den Modul brauche. Weil der Server über Plesk als Config-Tool configuriert wird, ist es nicht auszuschließen, dass es mal irgend wann von diesem Tool gebraucht wird. So genau weiss ich das nicht...

Also das Modul hat den Vorteil, dass man auf .htaccess Passwörter zugreifen kann. In der Regel braucht man das aber nicht. Einzig manche Verwaltungstools (z.B. Confixx) setzen das voraus. Bei Plesk weiß ich nicht ob es das voraussetzt, ich kenne Plesk nicht.

Es gibt theoretisch die Möglichkeit sowohl das aktuelle Modul für Plesk als auch die CGI Version für den Rest einzusetzen. Dann muss man die httpd.conf entsprechend verändern. Die Virtualhosteinträge müssen dann das PHP Modul entfernt bekommen (die genaue Syntax kenne ich im Moment nicht auswendig) und dafür den Eintrag aus den HowTo vom Anfang.

Ich habe versucht php ohne apxs Unterstützung zu configurieren, allerding stollpert der ./configure bei anderer Option:

Code:
Configuring extensions
checking for OpenSSL support... yes
checking for pkg-config... no
configure: error: Cannot find OpenSSL's <evp.h>
Wie ich verstehe sind auf dem Server überhaupt keine Distributionen drauf... :(
Die muss ich alle wohl selber besorgen...
Was sagst Du dazu?

Die 1&1 Images enthalten wohl die Sourcen für die Pakete nicht. Mit Apt kann man auch die Sourcen nachninstallieren. Ansonsten kann man die auch herunterladen und den --with-ssl Schalter anpassen das er dann die neuen Sourcen verwendet. Das wäre dann in etwa --with-ssl=/pfad/zu/den/sourcen.h
 
OP
Nucles

Nucles

Newbie
Hallo nbkr!

OpenSSL habe ich bereits nachträglich installiert. apxs konnte ich als Source nicht finden. Wahrscheinlich ist es direkt bei Apache2 integriert.
die Konfiguration mit
Code:
./configure ... --with-openssl --with-zlib-dir=/usr/local/lib ...
, allerdings ohne
Code:
--with-apxs2=/usr/sbin/apxs2-prefork
durchgeführt und dabei keine Fehlermeldung, dafür ein WARNING erhalten
Code:
You will be compiling the CGI version of PHP without any redirection checking...
So genau verstahe ich das Problem nicht. Ich habe nirgendswo implizit angegeben, dass ich php als CGI kompilieren will. Bei google konnte ich dazu keine Hilfe finden.

Hast Du vielleicht eine Ahnung, was diese Warnung anstoßen konnte?
Vielleich sollte man vor dem make und make install ein Backup des Systems durchführen, damit man auf der sicheren Seite ist?

Mit freundlichem Gruß
Dennis
 

nbkr

Guru
Nucles schrieb:
Code:
You will be compiling the CGI version of PHP without any redirection checking...
So genau verstahe ich das Problem nicht. Ich habe nirgendswo implizit angegeben, dass ich php als CGI kompilieren will. Bei google konnte ich dazu keine Hilfe finden.

Hast Du vielleicht eine Ahnung, was diese Warnung anstoßen konnte?
Vielleich sollte man vor dem make und make install ein Backup des Systems durchführen, damit man auf der sicheren Seite ist?

Wenn man PHP als CGI (und das tut man indem man das --with-axirgendwas weglässt) kompiliert entsteht ein echtes Binary - also eine ausführbare Datei. Diese sollte aus sicherheitsgründen nicht ohne Argument vom Apache aufgerufen werden (also ein besucher darf nicht einfach so php ausführen, ohne dass er eine PHP Seite aufgerufen hat). Das lässt sich mit der Option --enable-force-cgi-redirect mit einbauen. Wenn Du das deinem ./configure String hinzufügst solltest Du keine Warnung mehr erhalten und make und make install sollten durchlaufen.

Ein Backup des Systems ist eigentlich nicht notwendig ABER kann nicht schaden!
 
OP
Nucles

Nucles

Newbie
mit "--enable-force-cgi-redirect" habe ich wie Du gesagt hast KEIN WARNING mehr!!!

Ich gehe jetzt so vor, dass ich ein Backup des Systems durchführe und danach OHNE apxs2-Untestützung...
Code:
-with-apxs2=/usr/sbin/apxs2-prefork
php kompiliere und anschließend linke.

Ich denke bei solchen Systemarbeiten muss man geduldig sein, vor allem wenn man sowas nicht oft macht.
 
Oben