PHP Statisch linken

PHP Statisch linken

am 15.03.2006 14:34:50 von Marcel Kossin

Hallo Newsgroup,


ich versuche ein PHP5 Modul statisch zu linken, da ich eine 32-Bit
PHP-Version für eine 64-Bit LAM-Installation auf EM64T benötige.

Der configure-switch --enable-static und auch der Export von "gcc -static"
liefert mir aber dennoch ein dynamisch gelinktes Binary.

Ist es möglich PHP ohne shared libs zu kompilieren? Hat das schon jemand
geschafft?

Gruss
Marcel

Re: PHP Statisch linken

am 15.03.2006 14:44:16 von Frank Schenk

Marcel Kossin wrote:

> ich versuche ein PHP5 Modul statisch zu linken, da ich eine 32-Bit
> PHP-Version für eine 64-Bit LAM-Installation auf EM64T benötige.
>
> Der configure-switch --enable-static und auch der Export von "gcc -static"
> liefert mir aber dennoch ein dynamisch gelinktes Binary.
>
> Ist es möglich PHP ohne shared libs zu kompilieren? Hat das schon jemand
> geschafft?

Hallo Marcel,

wenn ich das richtig verstehe, möchtest du PHP als statisches Modul in
den Webserver einbinden? Dazu steht aber eigentlich alles im Manual:


http://de.php.net/manual/en/install.unix.php

Example 4-2. Installation Instructions (Static Module Installation for
Apache) for PHP

1. gunzip -c apache_1.3.x.tar.gz | tar xf -
2. cd apache_1.3.x
3. ./configure
4. cd ..

5. gunzip -c php-5.x.y.tar.gz | tar xf -
6. cd php-5.x.y
7. ./configure --with-mysql --with-apache=../apache_1.3.x
8. make
9. make install

10. cd ../apache_1.3.x

11. ./configure --prefix=/www --activate-module=src/modules/php5/libphp5.a
(The above line is correct! Yes, we know libphp5.a does not exist
at this
stage. It isn't supposed to. It will be created.)

12. make
(you should now have an httpd binary which you can copy to your
Apache bin dir if
it is your first install then you need to "make install" as well)

13. cd ../php-5.x.y
14. cp php.ini-dist /usr/local/lib/php.ini

15. You can edit /usr/local/lib/php.ini file to set PHP options.
Edit your httpd.conf or srm.conf file and add:
AddType application/x-httpd-php .php


gruß, Frank

Re: PHP Statisch linken

am 15.03.2006 15:02:29 von Marcel Kossin

Frank Schenk wrote:

Hallo Frank,

> Marcel Kossin wrote:
>
>> ich versuche ein PHP5 Modul statisch zu linken, da ich eine 32-Bit
>> PHP-Version für eine 64-Bit LAM-Installation auf EM64T benötige.
>>
>> Der configure-switch --enable-static und auch der Export von "gcc
>> -static" liefert mir aber dennoch ein dynamisch gelinktes Binary.
>>
>> Ist es möglich PHP ohne shared libs zu kompilieren? Hat das schon jemand
>> geschafft?
>
> Hallo Marcel,
>
> wenn ich das richtig verstehe, möchtest du PHP als statisches Modul in
> den Webserver einbinden? Dazu steht aber eigentlich alles im Manual:
>
>
> http://de.php.net/manual/en/install.unix.php

[...]

Vielen Dank für Deine Antwort. Ich hätte erwähnen sollen, dass ich das
bereits versucht habe. Leider ist es nicht das Ergebnis, dass ich mir
wünsche. Wenn ich nach der Anleitung vorgehe habe ich eine 32-Bit Apache
Version, die zudem noch gegen die 32-Bit Libraries gelinkt ist, die PHP so
braucht (MySQL, libiconv, etc.).

Ich habe aber bereits ein 64-Bit MySQL gebaut, einen 64-Bit Apache SSL und
möchte, weil die darauf laufende PHP-Applikation noch nicht auf einem 64
Bit-PHP läuft ein 32-Bittiges mod_php installieren. Da SuSE Linux
Enterprise Server 9 jedoch nicht wirklich 32-Bit auf EM64T kompilieren
kann, möchte ich ein statisch gelinktes 32-Bit mod_php haben, welches ich
unter 32-Bit kompilieren kann um es ohne alle nötigen Libraries mitkopieren
zu müssen einfach auf den EM64T-Rechner nutzen kann.

Ich hoffe, das ich mein Problem nun etwas verständlicher umrissen habe?

Dank und Gruss
Marcel

Re: PHP Statisch linken

am 15.03.2006 16:47:16 von Frank Schenk

Marcel Kossin wrote:
>
> Ich habe aber bereits ein 64-Bit MySQL gebaut, einen 64-Bit Apache SSL und
> möchte, weil die darauf laufende PHP-Applikation noch nicht auf einem 64
> Bit-PHP läuft ein 32-Bittiges mod_php installieren. Da SuSE Linux
> Enterprise Server 9 jedoch nicht wirklich 32-Bit auf EM64T kompilieren
> kann, möchte ich ein statisch gelinktes 32-Bit mod_php haben, welches ich
> unter 32-Bit kompilieren kann um es ohne alle nötigen Libraries mitkopieren
> zu müssen einfach auf den EM64T-Rechner nutzen kann.
>
> Ich hoffe, das ich mein Problem nun etwas verständlicher umrissen habe?

Ja, ist nun verständlich aber in dem Punkt kann ich dir leider nicht
wirklich helfen. Du möchtest Apache und alle Libraries in 64bit
compilieren und php fertig kompiliert und statisch gelinkt reinkopieren?

Wie wäre es, wenn du das im Manual beschriebene Procedere auf einem 32
bitter durchführst und dann php....a kopierst? Nur so eine Idee.


gruß, Frank

Re: PHP Statisch linken

am 15.03.2006 17:04:39 von Joerg Behrens

Marcel Kossin schrieb:
> Frank Schenk wrote:[..]

> Vielen Dank für Deine Antwort. Ich hätte erwähnen sollen, dass ich das
> bereits versucht habe. Leider ist es nicht das Ergebnis, dass ich mir
> wünsche. Wenn ich nach der Anleitung vorgehe habe ich eine 32-Bit Apache
> Version, die zudem noch gegen die 32-Bit Libraries gelinkt ist, die PHP so
> braucht (MySQL, libiconv, etc.).
>
> Ich habe aber bereits ein 64-Bit MySQL gebaut, einen 64-Bit Apache SSL und
> möchte, weil die darauf laufende PHP-Applikation noch nicht auf einem 64
> Bit-PHP läuft ein 32-Bittiges mod_php installieren. Da SuSE Linux
> Enterprise Server 9 jedoch nicht wirklich 32-Bit auf EM64T kompilieren
> kann, möchte ich ein statisch gelinktes 32-Bit mod_php haben, welches ich
> unter 32-Bit kompilieren kann um es ohne alle nötigen Libraries mitkopieren
> zu müssen einfach auf den EM64T-Rechner nutzen kann.
>
> Ich hoffe, das ich mein Problem nun etwas verständlicher umrissen habe?

Ein 64Bit Apache wird kein 32bit mod_php laden wollen. Du koenntest dann
nur noch PHP ueber CGI aufrufen.

Welches Script/Apps ist das denn welche nicht auf einem 64bit PHP laufen
mag?

Gruss
Joerg

Re: PHP Statisch linken

am 15.03.2006 18:00:34 von Marcel Kossin

Joerg Behrens wrote:

Hallo Joerg,

> Marcel Kossin schrieb:
>> Frank Schenk wrote:[..]
>
>> Vielen Dank für Deine Antwort. Ich hätte erwähnen sollen, dass ich das
>> bereits versucht habe. Leider ist es nicht das Ergebnis, dass ich mir
>> wünsche. Wenn ich nach der Anleitung vorgehe habe ich eine 32-Bit Apache
>> Version, die zudem noch gegen die 32-Bit Libraries gelinkt ist, die PHP
>> so braucht (MySQL, libiconv, etc.).
>>
>> Ich habe aber bereits ein 64-Bit MySQL gebaut, einen 64-Bit Apache SSL
>> und möchte, weil die darauf laufende PHP-Applikation noch nicht auf einem
>> 64 Bit-PHP läuft ein 32-Bittiges mod_php installieren. Da SuSE Linux
>> Enterprise Server 9 jedoch nicht wirklich 32-Bit auf EM64T kompilieren
>> kann, möchte ich ein statisch gelinktes 32-Bit mod_php haben, welches ich
>> unter 32-Bit kompilieren kann um es ohne alle nötigen Libraries
>> mitkopieren zu müssen einfach auf den EM64T-Rechner nutzen kann.
>>
>> Ich hoffe, das ich mein Problem nun etwas verständlicher umrissen habe?
>
> Ein 64Bit Apache wird kein 32bit mod_php laden wollen. Du koenntest dann
> nur noch PHP ueber CGI aufrufen.

Danke für diesen Hinweis. Ich war eben ohnehin dabei zu versuchen einen
statisch gelinkten Apache mit PHP zu bauen, allerdings gibt es hier auch
Probleme, die ich nicht ohne weiteres in den Griff kriegen werde :-(

> Welches Script/Apps ist das denn welche nicht auf einem 64bit PHP laufen
> mag?

Das ist eine Eigenprogrammierung, die Statistiken errechnet und somit laut
Programmierern stark von der Wortbreite abhängt. Die Portierung wird noch
etwas dauern, daher brauchen sie erstmal diesen Workaround :-(

Ich versuche nun erstmal mit dem Ansatz weiterzukommen einen 32-Bit Apache
mitsamt PHP zu kompilieren und die Libs mit herüberzukopieren.

Vielen Dank nochmal für Eure Hilfe.

Gruß
Marcel

Re: PHP Statisch linken

am 15.03.2006 18:53:01 von Joerg Behrens

Marcel Kossin schrieb:
> Joerg Behrens wrote:
>
> Hallo Joerg,
>
>> Marcel Kossin schrieb:
[..]
>> Welches Script/Apps ist das denn welche nicht auf einem 64bit PHP laufen
>> mag?
>
> Das ist eine Eigenprogrammierung, die Statistiken errechnet und somit laut
> Programmierern stark von der Wortbreite abhängt. Die Portierung wird noch
> etwas dauern, daher brauchen sie erstmal diesen Workaround :-(


Aehh... kannst du da noch einmal nachfragen damit sie ein Beispiel
nennen? Weil mir faellt nun auch nach laengerem Nachdenken nichts ein wo
ein PHP Script Probleme bekommen koennte. Haetten Sie gesagt das der
PHP Source Code Probleme(oder einige der Extension) macht oder aber es
ginge um eine Umstellung des Zeichensatzes von 8859-1 nach UTF8, dann
koennten ich das ja noch verstehen... wobei der schon seit Ewigkeiten
auch auf 64bit OSen kompiliert wird.

Das es als 64bit nicht schneller wird ist aber bekannt ja? ;) Ich bau
nachher mal nen 64bit PHP und lasse die Tests laufen und vergleiche mal
die Ergebnisse.

Gruss
Joerg