PHP 7.4.0 RC 5: Selbst kompilieren und testen
Letzte Woche Donnerstag ist der nach Plan fünfte Release-Candidate von PHP 7.4 erschienen: RC5. Es wird noch einen weiteren Release-Candidate geben, bevor hoffentlich am 28. November 2019 das finale PHP 7.4.0 GA erscheinen wird.
Es ist also höchste Zeit, dem PHP-Team dabei zu helfen, Bugs zu finden. Eigentlich sollte man das schon früher getan haben, aber besser spät als nie!
PHP 7.4 bringt einige interessante neue Features (Array Spread Operator, Typed Properties, Preloading, FFI, Improved Type Variance, Arrow Functions, …), aber auch wieder ein paar Prozent mehr Performance. Eine komplette Liste aller neuen Funktionen, Änderungen, Deprecations, backwards-incompatible Changes etc. befindet sich in der UPGRADING Datei.
Selbst kompilieren
Um die PHP Tests durchlaufen zu lassen, kompilieren wir PHP 7.4 RC5 selbst. Natürlich kann das dann entstandene PHP auch genutzt werden, beispielsweise um die PHPUnit Tests seiner Projekte durchlaufen zu lassen, oder mal einen Test-Webserver zu konfigurieren (Apache, PHP-FPM).
cd /tmp wget https://downloads.php.net/~derick/php-7.4.0RC5.tar.gz tar -xzvf php-7.4.0RC5.tar.gz cd php-7.4.0RC5/ ./configure --prefix=/usr/local/php7.4.0rc5 --with-zlib --with-config-file-path=/usr/local/php7.4.0rc5/etc --enable-mbstring --with-zip --with-imap --with-kerberos --with-imap-ssl --with-openssl --enable-gd --with-gettext --enable-ftp --with-pspell --with-curl make make test
Falls beim configure Fehler auftreten, guckt unten in der Liste am Ende dieses Artikels, da habe ich die aufgeschrieben, die bei mir aufgetreten sind. Es fehlten Developer-Pakete zum Kompilieren einiger Features und/oder Extensions.
Im Gegensatz zu alten configure-Befehlen hat sich etwas geändert:
früher: --enable-zip Seit 7.4: --with-zip früher: --with-gd Seit 7.4 --enable-gd
Am Ende des „make test“-Durchlaufs der über 12.300 Tests erhaltet ihr das Ergebnis. Falls Fehler aufgetreten sind, könnt ihr den Fehlerbericht direkt an das QA-Team schicken indem ihr Y drückt und eure E-Mail-Adresse eingebt zwecks eventueller Rückfragen. Eine Liste aller fehlgeschlagenen Tests von allen Testern gibt es auf qa.php.net.
Bei mir sind beispielsweise 3 Tests fehlgeschlagen:
===================================================================== FAILED TEST SUMMARY --------------------------------------------------------------------- Bug #61948 (CURLOPT_COOKIEFILE '' raises open_basedir restriction) [ext/curl/tests/bug61948-unix.phpt] Bug #41655 (open_basedir bypass via glob()) 1/2 [ext/standard/tests/file/bug41655_1.phpt] Test glob() function: ensure no platform difference, variation 3 [ext/standard/tests/file/glob_variation5.phpt] =====================================================================
Nach „make“ bzw. „make test“ kann PHP genutzt werden, beispielsweise kann man damit seine PHPUnit-Tests mal durchlaufen lassen.
$ /tmp/php-7.4.0RC5/sapi/cli/php -v PHP 7.4.0RC5 (cli) (built: Nov 4 2019 20:58:52) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0-dev, Copyright (c) Zend Technologies
Um nach den ganzen Tests wieder aufzuräumen, kann der Ordner /tmp/php-7.4.0RC5/ einfach wieder gelöscht werden. Oder wenn man es länger behalten möchte, installiert man die PHP-Version nach /usr/local/php7.4.0rc5 (siehe prefix Parameter beim configure):
sudo make install
Sollte man auf einem Testsystem machen, je nach Parametern (–with-apxs2) verändert/zerstört ihr eventuell euren laufenden Apache.
Bis zum „make test“ macht ihr auf jeden Fall nichts kaputt, und ihr könnt in Ruhe testen.
Viel Spass beim Testen und Bugs melden!
Mögliche Fehlermeldungen beim Kompilieren
Hier sind die Fehlermeldungen, die auf meinem Ubuntu 18.04 aufgetreten sind, inklusive der Lösungen:
configure: error: Package requirements (sqlite3 > 3.7.4) were not met: No package 'sqlite3' found sudo apt-get install libsqlite3-dev
--------
configure: error: Package requirements (oniguruma) were not met: No package 'oniguruma' found sudo apt-get install libonig-dev
--------
configure: error: Package requirements (libpng) were not met: No package 'libpng' found sudo apt-get install libpng-dev
--------
configure: error: Package requirements (libzip >= 0.11) were not met: No package 'libzip' found sudo apt-get install libzip-dev
--------
configure: error: xml2-config not found. Please check your libxml2 installation. sudo apt-get install libxml2-dev
--------
configure: error: Cannot find OpenSSL's <evp.h> sudo apt-get install libssl-dev
--------
checking for cURL 7.15.5 or greater… configure: error: cURL version 7.15.5 or later is required to compile php with cURL support sudo apt-get install libcurl4-openssl-dev
--------
configure: error: Cannot find OpenSSL's libraries sudo apt-get install pkg-config
--------
configure: error: Cannot find zlib sudo apt-get install zlib1g-dev
--------
checking whether to enable JIS-mapped Japanese font support in GD… no If configure fails try --with-webp-dir=<DIR> configure: error: jpeglib.h not found. sudo apt-get install libjpeg-turbo8-dev
--------
configure: error: png.h not found. sudo apt-get install libpng-dev
--------
configure: error: freetype-config not found. sudo apt-get install libfreetype6-dev
--------
configure: error: utf8_mime2text() has new signature, but U8T_CANONICAL is missing. This should not happen. Check config.log for additional information. sudo apt-get install libc-client2007e-dev
--------
configure: error: Kerberos libraries not found. Check the path given to --with-kerberos (if no path is given, searches in /usr/kerberos, /usr/local and /usr ) sudo apt-get install libkrb5-dev
--------
configure: error: Cannot find pspell sudo apt-get install libpspell-dev
--------
configure: error: Please reinstall the libzip distribution sudo apt-get install libzip-dev
Hallo ,
Ich sehe Ihre Website http://www.phpgangsta.de und sie ist beeindruckend. Ich frage mich, ob auf Ihrer Website Werbeoptionen wie Gastbeiträge oder Anzeigeninhalte verfügbar sind?
Was ist der Preis, wenn wir auf Ihrer Website werben möchten?
Hinweis: Artikel darf nicht als gesponsert oder Werbung gekennzeichnet sein.
Danke schön Jesse lark
jesse lark
11 Mai 24 at 13:47
@jesse lark ich hoffe ich kopf explodiert.
danielcrack
12 Jul 24 at 16:31