Other Changes
Changes to INI File Handling
zend.exception_ignore_args is a new INI directive
for including or excluding arguments from stack traces generated
from exceptions.
opcache.preload_user is a new INI directive
for specifying the user account under which preloading
code is executed if it would otherwise be run as root (which is not
allowed for security reasons).
Migration to pkg-config
A number of extensions have been migrated to exclusively use pkg-config for the
detection of library dependencies. Generally, this means that instead of using
--with-foo-dir=DIR or similar only
--with-foo is used. Custom library paths can be
specified either by adding additional directories to PKG_CONFIG_PATH
or by explicitly specifying compilation options through FOO_CFLAGS
and FOO_LIBS.
The following extensions and SAPIs are affected:
-
CURL:
-
Enchant:
-
FPM:
-
GD:
-
--with-gd becomes
--enable-gd
(whether to enable the extension at all) and
--with-external-gd
(to opt into using an external libgd, rather than the bundled one).
-
--with-png-dir has been removed. libpng is required.
-
--with-zlib-dir has been removed. zlib is required.
-
--with-freetype-dir
becomes --with-freetype
-
--with-jpeg-dir becomes
--with-jpeg
-
--with-webp-dir becomes
--with-webp
-
--with-xpm-dir becomes
--with-xpm
-
IMAP:
-
Intl:
-
LDAP:
-
Libxml:
-
--with-libxml-dir has been removed.
-
--enable-libxml becomes
--with-libxml.
-
--with-libexpat-dir has been renamed to
--with-expat and no longer accepts a directory.
-
LiteSpeed:
-
Mbstring:
-
ODBC:
-
OpenSSL:
-
PCRE:
-
PDO_SQLite:
-
Readline:
-
Sodium:
-
SQLite3:
-
XSL:
-
Zip:
Data Filtering
The filter extension no longer exposes
--with-pcre-dir for Unix builds and can now reliably
be built as shared when using ./configure
GD
The behavior of imagecropauto() in the bundled
libgd has been synced with that of system libgd:
The default $mode parameter of
imagecropauto() has been changed to
IMG_CROP_DEFAULT; passing -1
is now deprecated.
imagescale() now supports aspect ratio preserving
scaling to a fixed height by passing -1
as $new_width.
HASH Message Digest Framework
The hash extension cannot be disabled
anymore and is always an integral part of any PHP build, similar to
the date extension.
Lightweight Directory Access Protocol
Support for nsldap and umich_ldap has been removed.
Libxml
All libxml-based extensions now require libxml 2.7.6 or newer.
Multibyte String
The oniguruma library is no longer bundled with PHP, instead libonig needs
to be available on the system. Alternatively
--disable-mbregex can be used to disable
the mbregex component.
OPcache
The --disable-opcache-file and
--enable-opcache-file configure options
have been removed in favor of the
opcache.file_cache INI directive.
PEAR
Installation of PEAR (including PECL) is no longer enabled by default. It
can be explicitly enabled using --with-pear.
This option is deprecated and may be removed in the future.
Reflection
The numeric values of the modifier constants
(IS_ABSTRACT,
IS_DEPRECATED,
IS_EXPLICIT_ABSTRACT,
IS_FINAL,
IS_IMPLICIT_ABSTRACT,
IS_PRIVATE,
IS_PROTECTED,
IS_PUBLIC, and
IS_STATIC) on the
ReflectionClass,
ReflectionFunction,
ReflectionMethod,
ReflectionObject, and
ReflectionProperty
classes have changed.
SQLite3
The bundled libsqlite has been removed. To build the
SQLite3 extension a
system libsqlite3 ≥ 3.7.4 is now required. To build the
PDO_SQLite extension
a system libsqlite3 ≥ 3.5.0 is now required.
Serialization and unserialization of SQLite3,
SQLite3Stmt and SQLite3Result
is now explicitly forbidden. Formerly, serialization of instances of
these classes was possible, but unserialization yielded unusable objects.
The @param notation can now also be used to
denote SQL query parameters.
Zip
The bundled libzip library has been removed.
A system libzip >= 0.11 is now necessary to build the
zip extension.