PHP7.4X相对于之前的版本,核心性能上做了改进,最关键的是更改了很多的安装目录,对于手动安装php的朋友来说,更新升级或者是php扩展安装都带来很大烦恼,例如GD如何扩展更新安装,如何在GD里添加JPEG功能等,下面是来自官方的详细介绍:
Performance Improvements
PHP Core
添加了用于array_key_exists()函数的专用VM操作码,如果可以静态解析该函数​​,则可以提高该函数的性能。在命名空间代码中,这可能需要编写\array_key_exists()或显式导入函数。
Regular Expressions (Perl-Compatible)
当在同一字符串(但可能有不同的偏移量)上重复调用UTF-8模式下的preg_match()(“u”修饰符)时,将只检查一次UTF-8有效性。
Changes to INI File Handling
zend.exception_ignore_args是一个新的INI指令,用于从异常生成的堆栈跟踪中包括或排除自变量。
opcache.preload_user是一个新的INI指令,用于指定用户帐户,如果该帐户将以root用户身份运行,则将在该帐户下执行预加载代码(出于安全原因,这是不允许的)。
Migration to pkg-config
许多扩展已迁移为专门使用pkg-config来检测库依赖关系。通常,这意味着不使用 --with-foo-dir=DIR 或仅使用类似的 --with-foo。可以通过将其他目录添加到PKG_CONFIG_PATH 或通过FOO_CFLAGS 和FOO_LIBS显式指定编译选项来指定自定义库路径。
以下扩展名和SAPI会受到影响:
CURL:
--with-curl 不再接受目录。
Enchant:
--with-enchant 不再接受目录。
FPM:
--with-fpm-systemd 现在仅将pkg-config用于libsystem检查。libsystemd所需的最低版本为209。
GD:
--with-gd 变为 --enable-gd (是否完全启用扩展)和 --with-external-gd (选择使用外部libgd,而不是捆绑的libgd)。
--with-png-dir 已被删除。libpng是必需的。
--with-zlib-dir 已被删除。zlib是必需的。
--with-freetype-dir 变为--with-freetype
--with-jpeg-dir 变为 --with-jpeg
--with--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现在使用pkg-config(首选)。没有libodbc.pc的旧版本仍接受目录。
OpenSSL:
--with-openssl 不再接受目录。
PCRE:
--with-pcre-regex 已被删除。相反,提供了--with-external-pcre 以选择使用外部PCRE库,而不是捆绑的库。
PDO_SQLite:
--with-pdo-sqlite 不再接受目录。
Readline:
--with-libedit 不再接受目录。
Sodium:
--with-sodium 不再接受目录。
SQLite3:
--with-sqlite3 不再接受目录。
XSL:
--with-xsl 不再接受目录。
Zip:
--with-libzip已被删除。
--enable-zip 变为--with-zip 。
CSV escaping
现在,fputcsv()fgetcsv()SplFileObject :: fputcsv()SplFileObject :: fgetcsv()SplFileObject :: setCsvControl()接受一个空字符串作为 $ escape参数,这将禁用专有的PHP转义机制。
str_getcsv()的行为已相应调整(以前,空字符串与使用默认字符串相同)。
SplFileObject :: getCsvControl()现在也可以相应地为第三个数组元素返回一个空字符串。
Data Filtering
所述过滤器延伸不再自曝 --with-PCRE-DIR 用于Unix构建和如使用时共享现在可以可靠地建立的./configure
GD
捆绑的libgd中imagecropauto()的行为已与系统libgd的行为同步:
IMG_CROP_DEFAULT不再回落到IMG_CROP_SIDES
阈值裁剪现在使用系统libgd的算法
imagecropauto()的默认$ mode参数已更改;。 现在不赞成通过-1。IMG_CROP_DEFAULT
imagescale()现在支持通过将 -1 作为 $ new_width传递来将纵横比保持缩放到固定高度。
HASH Message Digest Framework
HASH不能再被禁用,它始终是PHP构建的组成部分,类似于日期扩展名。
Intl
现在,Intl扩展至少需要ICU50.1。
ResourceBundle -> Countable
Lightweight Directory Access Protocol
对nsldap和umich_ldap的支持已删除。
libxml
现在,所有基于libxml的扩展都需要libxml 2.7.6或更高版本。
Multibyte String
oniguruma库不再与PHP捆绑在一起,而libonig需要在系统上可用。另外,--disable-mbregex可用于禁用mbregex组件。
OPcache
该--disable-opcache文件和 --enable-opcache文件配置选项都赞成的被删除 opcache.file_cache INI指令。
Password Hashing
password_hash()和函数现在可空字符串和整数为$算法中的说法。
PEAR
默认情况下,不再启用PEAR(包括PECL)的安装。可以使用--with-pear明确启用它 。不建议使用此选项,以后可能会删除它。
Reflection
ReflectionClass, ReflectionFunction, ReflectionMethod, ReflectionObject和 ReflectionProperty类的修饰符常量(IS_ABSTRACT, IS_DEPRECATED, IS_EXPLICIT_ABSTRACT, IS_FINAL, IS_IMPLICIT_ABSTRACT, IS_PRIVATE, IS_PROTECTED, IS_PUBLIC和 IS_STATIC)的数值已更改。
SimpleXML
SimpleXMLElement现在实现 Countable
sqlite3
捆绑的libsqlite已被删除。要构建 SQLite3扩展,现在需要系统libsqlite3≥3.7.4。要构建 PDO_SQLite扩展,现在需要系统libsqlite3≥3.5.0。
现在明确禁止SQLite3, SQLite3Stmt和SQLite3Result的 序列化和反序列化。以前,可以对这些类的实例进行序列化,但是未序列化会产生无法使用的对象。
该@参数符号现在也可以用来表示SQL查询参数。
zip
捆绑的libzip库已被删除。现在需要系统libzip> = 0.11来构建 zip扩展名。
原文地址:https://www.php.net/manual/en/migration74.other-changes.php
建议使用带翻译功能的谷歌浏览器浏览网页,绿色免安装国际版下载:http://uzbox.com/Chrome

订阅
提醒
guest
0 评论
内联反馈
查看所有评论