Sonstige Änderungen

Verbesserung der Leistung

PHP-Kern

Für die Funktion array_key_exists() wurde ein spezieller VM-Opcode hinzugefügt, der die Leistung dieser Funktion verbessert, wenn der Parameterwert statisch aufgelöst werden kann. In Code, der Namensräume verwendet, kann es notwendig sein, einen absoluten Namen zu verwenden (\array_key_exists()) oder die Funktion explizit zu importieren.

Reguläre Ausdrücke (Perl-kompatibel)

Wenn die Funktion preg_match() im UTF-8 Modus (Modifikator "u") mehrmals für dieselbe Zeichenkette aufgerufen wird (aber möglicherweise mit unterschiedlichen Offsets), wird sie nur einmal auf valides UTF-8 geprüft.

Änderungen bei der Handhabung von INI-Dateien

zend.exception_ignore_args ist eine neue INI-Direktive, um Parameter in die von Ausnahmen erzeugten Stacktraces einzubeziehen oder davon auszuschließen.

opcache.preload_user ist eine neue INI-Direktive, um das Benutzerkonto anzugeben, unter dem der vorab geladene Code ausgeführt wird, wenn er sonst unter root laufen würde (was aus Sicherheitsgründen nicht erlaubt ist).

Umstellung auf pkg-config

Eine Reihe von Erweiterungen wurde dahingehend umgestellt, dass sie für die Erkennung von Bibliotheksabhängigkeiten ausschließlich pkg-config verwenden. Im Allgemeinen bedeutet dies, dass statt --with-foo-dir=DIR oder ähnlich nur --with-foo verwendet wird. Benutzerdefinierte Bibliothekspfade können entweder angegeben werden, imdem zusätzliche Verzeichnisse zu PKG_CONFIG_PATH hinzugefügt werden, oder durch Angabe expliziter Kompilierungsoptionen mittels FOO_CFLAGS und FOO_LIBS.

Die folgenden Erweiterungen und SAPIs sind betroffen:

  • CURL:
    • --with-curl akzeptiert kein Verzeichnis mehr.
  • Enchant:
    • --with-enchant akzeptiert kein Verzeichnis mehr.
  • FPM:
    • --with-fpm-systemd verwendet nur noch pkg-config für libsystemd-Überprüfungen. Die erforderliche Mindestversion von libsystemd ist 209.
  • GD:
    • --with-gd wurde zu --enable-gd (ob das Modul aktiviert werden soll oder nicht) und --with-external-gd (um eine externe libgd zu verwenden, anstatt der mitgelieferten).
    • --with-png-dir wurde entfernt. libpng wird nun zwingend vorausgesetzt.
    • --with-zlib-dir wurde entfernt. zlib wird nun zwingend vorausgesetzt.
    • --with-freetype-dir wurde zu --with-freetype
    • --with-jpeg-dir wurde zu --with-jpeg
    • --with-webp-dir wurde zu --with-webp
    • --with-xpm-dir wurde zu --with-xpm
  • IMAP:
    • --with-kerberos-systemd akzeptiert kein Verzeichnis mehr.
  • Intl:
    • --with-icu-dir wurde entfernt. Falls --enable-intl übegeben wird, dann wird libicu immer zwingend vorausgesetzt.
  • LDAP:
    • --with-ldap-sasl akzeptiert kein Verzeichnis mehr.
  • Libxml:
    • --with-libxml-dir wurde entfernt.
    • --enable-libxml wurde zu --with-libxml.
    • --with-libexpat-dir wurde umbenannt in --with-expat und akzeptiert kein Verzeichnis mehr.
  • Litespeed:
    • --with-litespeed wurde zu --enable-litespeed.
  • Mbstring:
    • --with-onig wurde entfernt. Sofern --disable-mbregex nicht übergeben wurde, ist libonig zwingend erforderlich.
  • ODBC:
    • --with-iodbc akzeptiert kein Verzeichnis mehr.
    • --with-unixODBC ohne Verzeichnis verwendet nun pkg-config (bevorzugt). Das Verzeichnis wird bei älteren Versionen ohne libodbc.pc immer noch akzeptiert.
  • OpenSSL:
    • --with-openssl akzeptiert kein Verzeichnis mehr.
  • PCRE:
    • --with-pcre-regex wurde entfernt. Dafür steht --with-external-pcre zur Verfügung, um statt der mitgelieferten PCRE-Bibliothek eine externe zu verwenden
  • PDO_SQLite:
    • --with-pdo-sqlite akzeptiert kein Verzeichnis mehr.
  • Readline:
    • --with-libedit akzeptiert kein Verzeichnis mehr.
  • Sodium:
    • --with-sodium akzeptiert kein Verzeichnis mehr.
  • SQLite3:
    • --with-sqlite3 akzeptiert kein Verzeichnis mehr.
  • XSL:
    • --with-xsl akzeptiert kein Verzeichnis mehr.
  • Zip:
    • --with-libzip wurde entfernt.
    • --enable-zip wurde zu --with-zip.

Maskieren von CSV

fputcsv(), fgetcsv(), SplFileObject::fputcsv(), SplFileObject::fgetcsv() und SplFileObject::setCsvControl() akzeptieren nun eine leere Zeichenkette als $escape-Parameter, wodurch der proprietäre PHP-Mechanismus für die Maskierung deaktiviert wird.

Das Verhalten der Funktion str_getcsv() wurde entsprechend angepasst (bisher war eine leere Zeichenkette gleichbedeutend mit der Verwendung der Standardeinstellung).

Die Methode SplFileObject::getCsvControl() kann dementsprechend für das dritte Array-Element nun auch eine leere Zeichenkette zurückgeben.

Datenfilterung

Für die Erweiterung filter steht die Option --with-pcre-dir für Unix-Builds nicht mehr zur Verfügung; sie kann nun problemlos mit ./configure als Shared gebaut werden.

GD

Das Verhalten der Funktion imagecropauto() in der mitgelieferten libgd-Bibliothek wurde mit dem der libgd des Systems synchronisiert:

  • IMG_CROP_DEFAULT greift nicht mehr auf IMG_CROP_SIDES zurück.
  • Der Schwellenwert für das Cropping verwendet nun den Algorithmus der System-libgd.

Bei der Funktion imagecropauto() wurde der Standardparameter von $mode geändert auf IMG_CROP_DEFAULT; die Übergabe von -1 ist veraltet.

Die Funktion imagescale() unterstützt nun die Beibehaltung des Seitenverhältnisses, wenn auf eine feste Höhe skaliert wird, indem -1 als $new_width übergeben wird.

HASH Message Digest Framework

Die Erweiterung hash kann nicht mehr deaktiviert werden und ist, ähnlich wie die Erweiterung date, immer ein integraler Bestandteil eines jeden PHP-Builds.

Intl

Die Erweiterung intl benötigt nun mindestens ICU 50.1.

Die Klasse ResourceBundle implementiert nun Countable.

Lightweight Directory Access Protocol (LDAP)

Die Unterstützung für nsldap und umich_ldap wurde entfernt.

Libxml

Alle libxml-basierten Erweiterungen benötigen nun mindestens libxml 2.7.6.

Multibyte-Zeichenketten

Die Bibliothek oniguruma wird nicht mehr in PHP mitgeliefert, stattdessen muss libonig auf dem System verfügbar sein. Alternativ dazu kann die Option --disable-mbregex verwendet werden, um die Komponente mbregex zu deaktivieren.

OPcache

Die Konfigurationsoptionen --disable-opcache-file und --enable-opcache-file wurden zugunsten der INI-Direktive opcache.file_cache entfernt.

Passwort-Hashing

Die Funktionen password_hash() und password_needs_rehash() akzeptieren beim Parameter $algo nun nullbare String und Integer.

PEAR

Die Installation von PEAR (einschließlich PECL) ist nicht mehr standardmäßig aktiviert. Sie kann explizit mit der Option --with-pear aktiviert werden. Diese Option ist veraltet und wird möglicherweise in Zukunft entfernt.

Reflection

Bei den Klassen ReflectionClass, ReflectionFunction, ReflectionMethod, ReflectionObject und ReflectionProperty haben sich die numerischen Werte der Modifizierungskonstanten (IS_ABSTRACT, IS_DEPRECATED, IS_EXPLICIT_ABSTRACT, IS_FINAL, IS_IMPLICIT_ABSTRACT, IS_PRIVATE, IS_PROTECTED, IS_PUBLIC und IS_STATIC) geändert.

SimpleXML

Die Klasse SimpleXMLElement implementiert nun Countable.

SQLite3

Die mitgelieferte Bibliothek libsqlite wurde entfernt. Um die Erweiterung SQLite3 zu erstellen, wird nun libsqlite3 ≥ 3.7.4 benötigt. Um die Erweiterung PDO_SQLite zu erstellen, wird nun libsqlite3 ≥ 3.5.0 benötigt.

Es ist nun ausdrücklich verboten, SQLite3, SQLite3Stmt und SQLite3Result zu serialisieren und zu deserialisieren. Zuvor war es zwar möglich, die Instanzen dieser Klassen zu serialisieren, aber die Deserialisierung führte zu unbrauchbaren Objekten.

Die Notation @param kann nun auch verwendet werden, um SQL-Abfrageparameter anzugeben.

Zip

Die mitgelieferte Bibliothek libzip wurde entfernt. Um die Erweiterung zip zu erstellen, wird nun libzip >= 0.11 benötigt.

Hier Kannst Du einen Kommentar verfassen


Bitte gib mindestens 10 Zeichen ein.
Wird geladen... Bitte warte.
* Pflichtangabe
Es sind noch keine Kommentare vorhanden.

PHP cURL-Tutorial: Verwendung von cURL zum Durchführen von HTTP-Anfragen

cURL ist eine leistungsstarke PHP-Erweiterung, die es Ihnen ermöglicht, mit verschiedenen Servern über verschiedene Protokolle wie HTTP, HTTPS, FTP und mehr zu kommunizieren. ...

TheMax

Autor : TheMax
Kategorie: PHP-Tutorials

Midjourney Tutorial - Anleitung für Anfänger

Über Midjourney, dem Tool zur Erstellung digitaler Bilder mithilfe von künstlicher Intelligenz, gibt es ein informatives Video mit dem Titel "Midjourney Tutorial auf Deutsch - Anleitung für Anfänger" ...

Mike94

Autor : Mike94
Kategorie: KI Tutorials

Grundlagen von Views in MySQL

Views in einer MySQL-Datenbank bieten die Möglichkeit, eine virtuelle Tabelle basierend auf dem Ergebnis einer SQL-Abfrage zu erstellen. ...

admin

Autor : admin
Kategorie: mySQL-Tutorials

Tutorial veröffentlichen

Tutorial veröffentlichen

Teile Dein Wissen mit anderen Entwicklern weltweit

Du bist Profi in deinem Bereich und möchtest dein Wissen teilen, dann melde dich jetzt an und teile es mit unserer PHP-Community

mehr erfahren

Tutorial veröffentlichen

Notizen-App: was ist eure - ich komm immer wieder auf Keep zurück...

Hallo liebe Community, guten Abend, Notizen-App: was ist eure - ich komm immer wieder auf Keep zurück... was ist eure beste NoteTaking App!? i ...

Geschrieben von dhubs am 22.12.2024 23:05:11
Forum: Off-Topic Diskussionen
How to overcome Safari's iframe cookie block?

To overcome Safari's iframe cookie block, you can use the SameSite=None; Secure cookie attribute in conjunction with a third-party domain that sup ...

Geschrieben von Joniemartinez am 21.12.2024 13:28:24
Forum: HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS
Probleme mit speichern in Datenbank in französisch

Les erreurs fréquentes lors de l'enregistrement de données dans une base de données incluent des problèmes de connexion, des erreurs de syntax ...

Geschrieben von Alice12 am 18.12.2024 05:07:21
Forum: PHP Developer Forum
Gibt es eine API zum Abrufen von PHP-Code-Referenzen?

PHP.net bietet eine umfassende Online-Dokumentation für PHP. Es gibt keine offizielle API zum Abrufen von PHP-Dokumentationen direkt, aber du kan ...

Geschrieben von Alice12 am 18.12.2024 05:03:27
Forum: PHP Developer Forum