PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP nach Kompilation Installieren



Leeloo
26.02.07, 12:39
Mahlzeit alle Miteinander,

um PHP5 mit den MSSQL-Funktionen zu nutzen, musste ich mir dieses neu kompilieren. Gesagt, getan. Alles fein. Nur die Installation (make install) klappt nicht wirklich. Es bleibt stetig das alte PHP 5.2.0 installiert, welches openSuse 10.2 mitbringt. Dieses hab ich per Yast installiert. Und nun auch ein wenig Angst, wenn ich es komplett deinstalliere, dass dann die Kommunikation mit dem Apachen nicht mehr funzt. Warum wird das neue nicht einfach über das alte PHP drüber gebügelt? Irgendwelche Vorschläge?

Vielen Dank,
Gruß,
Leeloo

baumgartner
26.02.07, 12:42
Wahrscheinlich weil es absicht ist dass man eine bereits existirende Installation überschreibt? Warum entfernst du das SUSE Paket nicht?

Meinst du eigentlich kompiliert oder installiert?

marce
26.02.07, 12:42
wie wäre es, wenn Du einfach die Version über das Paketmanagement installierst? Da sollte ein entsprechendes Paket (php-mysql oder so) enthalten sein.

Ansonsten - solange Du uns nicht verrätst, was Du genau wie gemacht hast können wir nur raten...

Leeloo
26.02.07, 13:29
Hallihallöle und danke für die Antworten.

Was hab ich gemacht:
- openSuse 10.2 installiert
- per Yast Apache2 sowie PHP5 mit diversen Modulen installiert
- PHP 5.2.1 heruntergeladen, ausgepackt und mit ./configure kompiliert
- anschließend make und dann make install

Bis auf das meine phpinfo() immer noch meint, es wäre PHP 5.2.0 installiert, wurden keine Fehler angezeigt. weder bei ./configure, make noch make install.

Und es soll wirklich MS-SQL zur Verfügung stehen. Dass es ein php-mysql Modul gibt, weiß ich. Das brauch ich aber nicht.

Ok, wenn ich jetzt alle php5-.... Sachen deinstalliere. Meinste das klappt dann mit make install? Bin mir noch etwas unsicher.

Gruß,
Leeloo

PS: Mein ./configure-Befehl sah übrigens so aus:
./configure --prefix=/usr --datadir=/usr/share/php5 --mandir=/usr/share/man
--bindir=/usr/bin --with-libdir=lib --includedir=/usr/include
--sysconfdir=/etc/php5/apache2 --with-config-file-path=/etc/php5/apache2
--with-config-file-scan-dir=/etc/php5/conf.d --with-exec-dir=/usr/lib/php5/bin
--enable-libxml --enable-filter --enable-session --with-mm --with-pcre-regex=/usr
--enable-xml --enable-simplexml --enable-spl --disable-debug --enable-memory-limit
--enable-inline-optimization --enable-zend-multibyte --disable-rpath --with-apxs2=/usr/sbin/apxs2
--disable-all --disable-cli --with-mssql=/usr/local/freetds

marce
26.02.07, 13:35
... hast Du auch die Apache-Konfiguration an das neue Modul angepasst?

Abgesehen davon: "Du brauchst" MySQL-Unterstützung, weigerst Dich aber, das entsprechende YAST-php-Modul zu installieren? Aha.

drcux
26.02.07, 13:38
ziehe dir das src.rpm von SUSE, passe das SPEC an (--with-mssql=/usr/local/freetds) und baue das RPM neu. Dann kannst du es einfach installieren

drcux
26.02.07, 13:39
Abgesehen davon: "Du brauchst" MySQL-Unterstützung

Er redet von Microsoft SQL Server denke ich....

marce
26.02.07, 13:45
*AufStirnHau* Oh Gott, stimmt... Naja, Macht der Gewohnheit... Sorry.

Aber trotzdem: Apachekonfig angepasst?

Leeloo
26.02.07, 14:29
Hi drcux,


ziehe dir das src.rpm von SUSE, passe das SPEC an (--with-mssql=/usr/local/freetds) und baue das RPM neu. Dann kannst du es einfach installieren

Hm ... Was für ein SPEC? Und wie baue ich das RPM dann neu?

Ok - schnell mal gegoogelt. So wie ich das verstehe, müsste es ein php5.spec geben, nachdem ich das Source-Paket installiert habe. Kann ich mit dem alten mitgelieferten PHP 5.2.0 machen, ja?! In der SPEC die Anpassung, wenn ich sie finde. Und Kompilieren: rpmbuild -ba php5.spec. Dabei wird nen Binary und nen Devel-RPM erstellt. Erstes kann ich dann per rpm -i installieren?! Einfach über das alte drüber? Oder das Alte lieber vorher deinstallieren?

Und ich brauch kein MySQL sondern wirklich MS SQL (das von Microsoft). Deshalb ja die Neukompilation. Da gibts leider kein RPM-Paket für :( Hab jedenfalls noch keines gefunden. Oder nicht intensiv danach gesucht.

VIelen Dank,
Gruß,
Leeloo

Leeloo
26.02.07, 14:31
*AufStirnHau* Oh Gott, stimmt... Naja, Macht der Gewohnheit... Sorry.

Aber trotzdem: Apachekonfig angepasst?

Hehe ... da verwechselt man schnell mal ein y mit einem S ;-)

Was soll ich an der Apachekonfig anpassen? Hab mir auch schon den Wust von conf-Files reingezogen. Bis auf eine php5.conf, hab i nix weiter gefunden. Da steht was von einem Module mod_php5.c. Gibts auf meinem openSuse net. Merkwürdig.

Gruß,
Leeloo

Leeloo
26.02.07, 14:33
Er redet von Microsoft SQL Server denke ich....

Er??? Wo???

Richtig gedacht, aber sie tut es :D
Oder wen meintest du?

marce
26.02.07, 14:35
Hm, Du hast ja --with-apxs gebaut - er müsste Dir also ein entsprechendes .so gebaut haben. Nach dem make install sollte das im Apache-Libexec-Verzeichnis liegen - wenn nicht, dann sollte es auch noch im sourcen-VZ liegen, das kannst Du dann manuell dorthin verschieben und dann halt entsprechend die Apache-Konfig anpassen, dass er dieses Modul lädt.

Wie es nun genau heisst / heissen muss und wie die entsprechende LoadModule-Anweisung lauten muss -> Apache-Doku.

Es sollte aber reichen, dass alte mod_php5.so / libphp5.so mit dem neu generierten zu überschreiben und den Apache neu zu starten...

Leeloo
26.02.07, 15:54
Der Einfachhalthalber hab ich make install nochmal gemacht, um mir nochmal genauer anzuguggen, was der eigentlich macht:

Installing PHP SAPI module: apache2handler
/usr/share/apache2/build/instdso.sh SH_LIBTOOL='/usr/lib/apr-1/build/libtool' libphp5.la /usr/lib/apache2
/usr/lib/apr-1/build/libtool --mode=install cp libphp5.la /usr/lib/apache2/
cp .libs/libphp5.so /usr/lib/apache2/libphp5.so
cp .libs/libphp5.lai /usr/lib/apache2/libphp5.la
libtool: install: warning: remember to run `libtool --finish /root/php-5.2.1/libs'
chmod 755 /usr/lib/apache2/libphp5.so
activating php5
"php5" already present
Installing build environment: /usr/lib/php/build/
Installing header files: /usr/include/php/
Installing helper programs: /usr/bin/
program: phpize
program: php-config
Installing man pages: /usr/share/man/man1/
page: phpize.1
page: php-config.1


Die libphp5.so hat er wohl überschrieben, nur die mod_php5.so nicht. Beide liegen in /usr/lib/apache2/.
Interessant ist die Ausgabe: "php5" already present
Was das wohl zu bedeuten hat? Kann er deshalb die mod_php5.so nicht überschreiben?
Was hat eigentlich dieses: rembember to run libtool zu bedeuten? Ist nämlich bei mir net installiert. Tu ich grad. Mal schaun, was dann passiert. Der installiert die beiden Libaries einfach unter libs/ in dem Verzeichnis was dort eben angegeben ist. Blöd ...

Gruß,
Leeloo

drcux
26.02.07, 17:43
So wie ich das verstehe, müsste es ein php5.spec geben, nachdem ich das Source-Paket installiert habe.


richtig, es liegt unter /usr/src/packages/SPECS/



Kann ich mit dem alten mitgelieferten PHP 5.2.0 machen, ja?!


ja, sollte gehen



In der SPEC die Anpassung, wenn ich sie finde. Und Kompilieren: rpmbuild -ba php5.spec. Dabei wird nen Binary und nen Devel-RPM erstellt. Erstes kann ich dann per rpm -i installieren?! Einfach über das alte drüber? Oder das Alte lieber vorher deinstallieren?


rpm -U /usr/src/packages/RPMS/i586/php_blah_.rpm

damit updatest du dein installietes RPM

Leeloo
27.02.07, 11:46
Hallo drcux,

ich danke dir für deine Hilfe. Mein Problem ist leider immer noch nicht gelöst. Das rpmbuild ist leider nicht erfolgreich und dauert irgendwie immer ziemlich lange. Nach dem ich die notwenigen Konfigurationen vorgenommen hab (d.h. ich hab die Hälfte von den Modulen erstmal auskommentiert, weil: Brauch ich nicht.) Lief es auch gut durch, doch scheitert es jetzt an dem Befehl mv php.1 php5.1. Fehlermeldung:

Cannot stat ‘php.1’ No such file or directory.
Stimmt ja auch, dass die Datei nicht da ist. Nur kann ich keinen Einfluss darauf nehmen, weil die beim Kompilieren ja dort erstellt werden muss. Ist ja ein temporäres Verzeichnis, dass am Anfang immer mit rm -rf gesäubert wird. Die php.1 liegt allerdings in einem anderen dieser temporären Verzeichnisse.

/usr/src/packages/BULID/php-5.2.0/build-cli/sapi/cli/php.1
Und nicht in dem, wo der grad ist:

$RPM_BUILD_ROOT/%{_mandir}/man1

Back to the Start. Statt openSuse diesmal gleich mit PHP zu installieren, lass ich das ganz weg und installier nur den Apachen. Dann probier ich das ganze nochmal mit ./configure und evtl. auch nochmal mit dem rpmbuild. Wenn das nicht klappt spring ich aus dem Fenster. Das muss doch irgendwie gehen. Was zum Teufel mach ich falsch? Hab wohl immer noch nicht den kompletten Durchblick *grummel* Ich beiße mir daran jetzt schon Tage die Zähnen aus. Das kann doch nicht sein. *gleicheinenSchreianfallkrieg*

Trotzdem danke und weiterhin verzweifelte Grüße,
Leeloo

:confused:

drcux
27.02.07, 13:31
(d.h. ich hab die Hälfte von den Modulen erstmal auskommentiert, weil: Brauch ich nicht.)

warum? Dann ist es ja auch kein Wunder, wenn der Build nicht durchläuft...

Leeloo
27.02.07, 14:38
Naja, er würde auch sonst net durchlaufen, weil die ganzen für mich unsinnigen Module ja auch noch diverse Devel-Pakte etc. brauchen und die müsst ich erstmal nachladen.

Den RPMBUILD hab ich nun erstmal über den Haufen geworfen und mich wieder an ./configure und php-5.2.1 gewagt. Hab mit dem Umgang von RPMBUILD ja einiges gelernt.
Moral von der Geschicht: Erzeuge ein php5.conf in /etc/apache2/conf.d allerdings mit folgendem Inhalt:


<IfModule mod_php5.c>
AddHandler application/x-httpd-php .php4
AddHandler application/x-httpd-php .php5
AddHandler application/x-httpd-php .php
AddHandler application/x-httpd-php-source .php4s
AddHandler application/x-httpd-php-source .php5s
AddHandler application/x-httpd-php-source .phps
DirectoryIndex index.php4
DirectoryIndex index.php5
DirectoryIndex index.php
</IfModule>

und nicht,wie woanders angegeben:


LoadModule php5_module /usr/lib/apache2/libphp5.so
AddType application/x-httpd-php php

Damit meint der Apache2 nur: PHP5-Modul schon geladen.

So, dann werd ich mal schaun, was ich da verbrochen hab und ob noch alles so funzt, wie es vorher funzte, nur jetzt eben mit PHP-MSSQL-Funktionen :D

Liebe Grüße,
Leeloo