1

Ich brauche eine Standalone-unabhängige-System-Bibliotheken-Version von PHP, um es als ZIP-Datei mit Binärdateien zu verteilen. Zuvor enthielt die .zip-Datei die ausführbaren Dateien libxml2.so.2, libpng12.so.0, php.ini und php. Kürzlich musste ich einige Funktionalitäten hinzufügen und das PHP neu kompilieren. Ich habe es mit:Wie kompiliere ich PHP, um es von Systembibliotheken unabhängig zu machen?

./configure \ 
    --prefix=/home/user/php/out \ 
    --libdir=. \ 
    --enable-static=YES \ 
    --enable-shared=NO \ 
    --with-pdo_mysql \ 
    --with-gd \ 
    --with-mysql \ 
    --enable-zip \ 
    --enable-zend-multibyte \ 
    --enable-cgi \ 
    --enable-fastcgi \ 
    --with-ldap=shared 
make && make install 

Dann nahm ich php aus aus/ist und libmysqlclient.so.16 von/usr/lib /. Aber der neue PHP möchte die Bibliothek nicht aufnehmen. Sobald ich es laufen lasse, bekomme ich folgende Fehlermeldung:

./php: error while loading shared libraries: libmysqlclient.so.16: cannot open shared object file: No such file or directory 

libmysqlclient.so.16 und PHP im selben Verzeichnis befinden. Wenn ich libmysqlclient.so.16 nach/usr/lib setze, funktioniert php gut.

Gibt es eine zusätzliche Option, die ich beim Kompilieren vergessen habe? Warum ist nicht "--libdir =." Option funktioniert?

Antwort

2

Erstens ist die Richtlinie --with-libdir nicht --libdir. Zweitens, ich denke, es ist relativ zu /usr, so setzen . bedeutet, dass Sie die gemeinsam genutzten Bibliotheken in /usr setzen müssen.

Wenn Sie eine C-Codierung mit gemeinsam genutzten Bibliotheken durchgeführt haben, müssen Sie über ld wissen. Die einfachste Möglichkeit, den Pfad für gemeinsam genutzte Bibliotheken zu verwenden, ist die Verwendung von ld.

Sie können den Bibliothekspfad für die aktuelle (Shell) Sitzung festgelegt:

bash-4.1$ export LD_LIBRARY_PATH=/path/to/your/libs 

Sie können auch ld so konfigurieren, dass die ganze Zeit zu tun:

bash-4.1$ echo /path/to/your/libs >> /etc/ld.so.conf 
bash-4.1$ ldconfig 
+0

Es war gerade genug, um PHP mit 'LD_LIBRARY_PATH = \' pwd \ '/ php' zu beginnen -. Vielen Dank für Ihre Antwort. – ssobczak

Verwandte Themen