其他变更
INI 配置文件处理的变化
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 execute if it would otherwise be run as root (which is not
allowed for security reasons).
迁移到 pkg-config
一些扩展已经迁移到只使用 pkg-config 来检测库的依赖性。一般来说,这意味着不再用
--with-foo-dir=DIR 或类似的参数,而是使用
--with-foo。自定义库的路径可以通过向 PKG_CONFIG_PATH
添加额外的目录,或通过 FOO_CFLAGS
和 FOO_LIBS
来明确指定。
以下扩展和 SAPI 会受到影响:
-
CURL:
-
Enchant:
-
--with-enchant 选项不再接受一个目录。
-
FPM:
-
--with-fpm-systemd now uses only pkg-config
for libsystem checks. The libsystemd minimum required version is 209.
-
GD:
-
--with-gd 改变为
--enable-gd
(whether to enable the extension at all) 和
--with-external-gd
(to opt into using an external libgd, rather than the bundled one).
-
--with-png-dir 参数被移除。需要 libpng 支持。
-
--with-zlib-dir 参数被移除。需要 zlib 支持。
-
--with-freetype-dir
改变为 --with-freetype
-
--with-jpeg-dir 改变为
--with-jpeg
-
--with-webp-dir 改变为
--with-webp
-
--with-xpm-dir 改变为
--with-xpm
-
IMAP:
-
--with-kerberos-systemd 选项不再接受一个目录。
-
Intl:
-
--with-icu-dir
被移除。如果使用了 --enable-intl
参数,需要 libicu 支持。
-
LDAP:
-
--with-ldap-sasl 选项不再接受一个目录。
-
Libxml:
-
--with-libxml-dir 被移除。
-
--enable-libxml 改变为
--with-libxml。
-
--with-libexpat-dir 被重命名为
--with-expat 并且该选项不再接受一个目录。
-
Litespeed:
-
--with-litespeed 改变为
--enable-litespeed。
-
Mbstring:
-
--with-onig 被移除。如果指定了
--disable-mbregex 参数,则需要 libonig 支持。
-
ODBC:
-
--with-iodbc 选项不再接受一个目录。
-
--with-unixODBC without a directory now uses
pkg-config (preferred). Directory is still accepted for old versions without libodbc.pc.
-
OpenSSL:
-
--with-openssl 选项不再接受一个目录。
-
PCRE:
-
--with-pcre-regex
被移除。Instead --with-external-pcre
is provided to opt into using an external PCRE library, rather
than the bundled one.
-
PDO_SQLite:
-
--with-pdo-sqlite 选项不再接受一个目录。
-
Readline:
-
--with-libedit 选项不再接受一个目录。
-
Sodium:
-
--with-sodium 选项不再接受一个目录。
-
SQLite3:
-
--with-sqlite3 选项不再接受一个目录。
-
XSL:
-
Zip:
-
--with-libzip 被移除。
-
--enable-zip 改变为
--with-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:
-
IMG_CROP_DEFAULT
is no longer falling
back to IMG_CROP_SIDES
-
Threshold-cropping now uses the algorithm 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.
Password Hashing
The password_hash() and functions
now accept nullable string and int for $algo
argument.
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.