Ubuntu 14.04 – PHP 5.6.17 kompiliert – mysqli.so fehlt bzw. hat die falsche Version

Nach dem Kompilieren von PHP aktivierte ich in der PHP.INI den Eintrag

extension=mysqli.so

damit wollte ich das gleichnamige Modul für meine Programme aktivieren. Allerdings fand er das Modul nicht.

Im Normalfall wird das Modul einfach

sudo apt-get install php5-mysql

installiert. Allerdings bekomme ich von apt-get nur eine ältere nicht dazu passende PHP-Version, so dass er im Verzeichnis /usr/lib/php5/20121212 die Datei mysqli.so ablegt. Diese hat dann jedoch leider eine falsche Version. Ich benötige die Datei mit der Version 20131226. Diese konnte ich nicht manuell kompilieren und wurde auch von der PHP-Installation immer vermisst. Google hilft: Sie lösst sich unter folgendem Link downloaden:

http://packages.ubuntu.com/de/vivid-updates/amd64/php5-mysqlnd/filelist

so dass ich die Datei mir mit dem Befehl

wget http://de.archive.ubuntu.com/ubuntu/pool/universe/p/php5/php5-mysqlnd_5.6.4+dfsg-4ubuntu6.4_amd64.deb

Entpackt habe ich die .deb-Datei wie folgt:

dpkg -x php5-mysqlnd_5.6.4+dfsg-4ubuntu6.4_amd64.deb /tmp/out

Anschließend habe ich die Datei mysqli.so nach /usr/lib/php5/20131226/mysqli.so kopiert und diese Datei in die PHP.INI mit

extension=/usr/lib/php5/20131226/mysqli.so

eingebunden.

Damit funktionierte das Modul mysqli und ließ sich ohne zu meckern in PHP einbinden.

Unter dem nachfolgenden Link gibt es eine Anleitung, wie man die PHP-Module von hand aktiviert

http://www.sitepoint.com/install-php-extensions-source/

Das hat bei mir aber leider nicht funktioniert.

 

PHP5 mittels Source Code auf einem frischen Ubuntu installieren

Das “hineinkompilieren” eines Advantage Database-Moduls machte es für mich erforderlich, die aktuelle PHP-Version auf einem frisch installierten Ubuntu (14.04) zu installieren.

Angelehnt an diese Anleitung entstand für mich der folgende Workarround:

Nach der Installation sind zuerst die Voraussetzungen für die Verwendung von PHP notwendig:

sudo apt-get install git build-essential autoconf apache2-prefork-dev

Anschließend installierte ich den Apache und zugehörige DEV-Module:

sudo apt-get install apache2 apache2-dev

Für das erfolgreiche Absolvieren benötigte ich noch die folgenden “Zusatzmodule”:

sudo apt-get php5-cli php5-mysql php5-gd php5-mcrypt php5-curl libapache2-mod-php5 php5-xmlrpc mysql-client libapache2-mod-fastcgi libxslt1.1 libxslt1-dev

 

sudo apt-get install php5-dev libbz2-dev libmysqlclient-dev libxpm-dev libmcrypt-dev libcurl4-gnutls-dev libxml2-dev libjpeg-dev libpng12-dev libfreetype6-dev libicu-dev

Wenn noch MySQL gewünscht ist, lässt sich dieses noch einfach ergänzen

sudo apt-get install mysql-server

Jetzt könnt ihr testen, ob der Apache richtig installiert wurde, indem ihr die IP-Adresse der Ubuntu-Servers im Browser aufruft:

Ubuntu Apache2 Install Confirmation SiteJetzt ist es an der Zeit den PHP Quelltext herunterzuladen:

git clone https://github.com/php/php-src.git

Checkt die von Euch gewünschte Version aus:

git checkout PHP-5.6.26

oder

git checkout PHP-5.6

Um aus dem PHP-Source nachher das makefile mit .configure zu erzeugen, benötigt ihr noch Bison, sonst bringt er folgende Fehlermeldung:

configure: WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers.
configure: error: bison is required to build PHP/Zend when building a GIT checkout!

Diese Meldung umgeht ihr, indem ihr Euch bison von http://launchpadlibrarian.net herunterladet und installiert:

wget http://launchpadlibrarian.net/140087283/libbison-dev_2.7.1.dfsg-1_amd64.deb
wget http://launchpadlibrarian.net/140087282/bison_2.7.1.dfsg-1_amd64.deb
sudo dpkg -i libbison-dev_2.7.1.dfsg-1_amd64.deb
sudo dpkg -i bison_2.7.1.dfsg-1_amd64.deb

geht in den PHP-Source-Path – bei mir:./bu

cd ~/php-source

Jetzt muss das .configure-Skript erstellt werden mit

./buildconf

Als nächstes wird mit /.configure eingestellt, welche Module wir in PHP haben möchten. Ich empfehle diesen Mix aus üblichen PHP-Modulen:

./configure –with-apxs2=/usr/bin/apxs2 –with-mysql  –enable-mbstring   –with-curl   –with-openssl   –with-xmlrpc   –enable-soap   –enable-zip   –with-gd   –with-jpeg-dir   –with-png-dir   –with-mysql   –with-pgsql   –enable-embedded-mysqli   –with-freetype-dirphp    –enable-intl   –with-xsl –enable-mbstring   –with-curl   –with-openssl   –with-xmlrpc   –enable-soap   –enable-zip   –with-gd   –with-jpeg-dir   –with-png-dir   –with-mysql   –with-pgsql   –enable-embedded-mysqli   –with-freetype-dir     –enable-intl   –with-xsl –prefix=/usr/local/php

Mit den folgenden Befehlen erstellt ihr das Setup und installiert anschließend PHP auf dem Server

sudo make

sudo make install

libtool –finish /home/gustini/php-src/libs

Jetzt kopiert ihr eine der PHP-INIs (develpment oder production) an den Zielordner:

sudo cp php.ini-development /usr/local/lib/php.ini

Um PHP im Apache einzubinden, müsst ihr die Apache2.conf um folgende Zeilen ergänzen:

sudo vim /etc/apache2/apache2.conf

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

Damit PHP auch funktioniert, muss Apache2 vom ThreadSafe-Mode in den NotThreadSafeMode umgeschaltet werden:

sudo a2dismod mpm_event

sudo a2enmod mpm_prefork

cd

Jetzt müsst ihr noch den Apache2 neu starten:

sudo /etc/init.d/apache2 stop

sudo /etc/init.d/apache2 start

Anschließend sollte Apache und PHP5 erfolgreich installiert sein.

Ergänzende Hinweise:

Hinzufügen von PHP zum Pfad

sudo vim ~/.bashrc

Am Ende der Datei hinzufügen:

export PATH=$PATH:/usr/local/php/bin

 

Build PHP5 unter Ubuntu – Fehler: bison is required to build PHP/Zend when building a GIT checkout!

Fehlermeldung beim Kompilieren von PHP5-Source unter Ubuntu:

configure: error: bison is required to build PHP/Zend when building a GIT checkout

PHP5 benötigt für die Kompilierung bison 2.7. Dies lässt sich einfach nachinstallieren – anschließend läuft das “buildConfig” problemlos durch.

sudo apt-get install m4
wget http://launchpadlibrarian.net/140087283/libbison-dev_2.7.1.dfsg-1_amd64.deb
wget http://launchpadlibrarian.net/140087282/bison_2.7.1.dfsg-1_amd64.deb
sudo dpkg -i libbison-dev_2.7.1.dfsg-1_amd64.deb
sudo dpkg -i bison_2.7.1.dfsg-1_amd64.deb

Fehlermeldung unter Windows
Die Fehlermeldung kann auch beim Kompilieren von PHP unter Windows auftreten.

Wenn nach dieser Anleitung kompiliert wird, erscheint sie möglicherweise automatisch.
Beheben lässt sich die Fehlermeldung, indem die PHP-Binary-Tools, welche für die Kompilierung benötigt werden, in den Pfad der Umgebungsvariablen aufgenommen werden.

Ein kurzer Weg:

  • Windows-Taste + Pause
  • Erweitere Systemeinstellungen
  • Umgebungsvariablen
  • Ergänzen der Umgebungsvariable “PATH” um den Eintrag des bin-Verzeichnisses der PHP-Binary-Tools, nach der oben verlinkten Anleitung wäre das “c:\php-sdk\bin\”.