Інші зміни
Поліпшення продуктивності
Ядро PHP
Додано спеціальний опкод віртуальної машини для функції array_key_exists(), що покращує продуктивність цієї функції, якщо значення параметра може бути статично дозволено. У коді, який використовує простір імен, можливо буде потрібно використання абсолютного імені (\array_key_exists()
) або ж явний імпорт функції.
Регулярні вирази (сумісні з Perl)
Когда функцияpreg_match()в режиме UTF-8 (модификатор"u"
) неодноразово викликається для одного і того ж рядка (можливо, на різних позиціях), перевірка правильності UTF-8 буде виконана лише один раз.
Зміни обробки INI-файлів
zend.exception_ignore_args - нова INI-директива для включення або виключення аргументів з трасування стека, отриманих у винятках.
opcache.preload_user - нова INI-директива для встановлення користувача, з-під якого має виконуватися код попереднього завантаження, інакше це буде root (не допускається з міркувань безпеки).
Міграція на 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 замість тієї, яка йде в комплекті.
- Опция**--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**без каталогу тепер використовує 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
fputcsv() fgetcsv() SplFileObject::fputcsv() SplFileObject::fgetcsv() і SplFileObject::setCsvControl()теперь принимаем пустую строку в аргументе$escape
. Це відключить пропрієтарний механізм екранування PHP.
Поведение функцииstr_getcsv() було відповідним чином скориговано (раніше порожній рядок був ідентичний використанню значення за замовчуванням).
МетодSplFileObject::getCsvControl() тепер також може повертати порожній рядок для третього елемента масиву відповідно.
Фільтрування даних
Модульfilter більше не підтримує ---with-pcre-dir для Unix-складання і тому може бути спокійно зібраний для загального користування за допомогою ./configure
GD
Поведение функцииimagecropauto() у вбудованій бібліотеці libgd було синхронізовано із системною бібліотекою libgd:
IMG_CROP_DEFAULT
у разі невдалого виконання не замінюється наIMG_CROP_SIDES
- Порогове значення кадрування тепер розраховується з алгоритму системної бібліотеки libgd
Значение по умолчанию$mode
imagecropauto() було змінено на IMG_CROP_DEFAULT
; передача-1
тепер оголошено застарілою.
imagescale() тепер підтримує масштабування зі збереженням співвідношення сторін до фіксованої висоти під час передачі -1
в параметр$new_width
Фреймворк хеш-кодів HASH
Модульhash більше не можна відключити, тепер він є невід'ємною частиною будь-якої PHP-складання, подібно до модуля date
Intl
Модульintl тепер вимагає щонайменше ICU 50.1.
КлассResourceBundle тепер реалізує Countable
Полегшений протокол доступу до каталогів (LDAP)
Підтримка nsldap та umich_ldap було видалено.
Libxml
Усі модулі на основі libxml тепер вимагають libxml версії 2.7.6 або новіші.
Багатобайтові рядки
Бібліотека oniguruma більше не йде в комплекті з PHP, замість неї в системі має бути libonig. Як альтернативу можна вказати ---disable-mbregex, щоб вимкнути компонент mbregex.
OPcache
Конфігураційні опції --disable-opcache-file і --enable-opcache-file видалені на користь використання INI-директиви opcache.file_cache
Хешування паролів
Функції password_hash() і password_needs_rehash() тепер приймають рядок, що обнулюється, (string) і ціле число (int) в аргументі $algo
PEAR
Установка PEAR (разом із PECL) більше не ввімкнена за замовчуванням. Її можна явно увімкнути, використовуючи --with-pear. Ця опція оголошена застарілою та може бути видалена в майбутньому.
Reflection
Змінено числові значення констант-модифікаторів (IS_ABSTRACT
IS_DEPRECATED
IS_EXPLICIT_ABSTRACT
IS_FINAL
IS_IMPLICIT_ABSTRACT
IS_PRIVATE
IS_PROTECTED
IS_PUBLIC
иIS_STATIC
) у класах ReflectionClass ReflectionFunction ReflectionMethod ReflectionObject і ReflectionProperty
SimpleXML
КлассSimpleXMLElement тепер реалізує Countable
SQLite3
Вбудована бібліотека libsqlite у збірці видалена. Для складання модуля SQLite3 тепер потрібно libsqlite3 ≥ 3.7.4. Щоб зібрати модуль PDO_SQLite обов'язково потрібний libsqlite3 ≥ 3.5.0.
Серіалізація та десеріалізація SQLite3 SQLite3Stmt і SQLite3Result тепер явно заборонено. Раніше серіалізація екземплярів цих класів була можливою, але десеріалізація робила об'єкти невикористовуваними для подальшої роботи.
Нотацию@param
тепер можна також використовувати для позначення параметрів SQL-запиту.
Zip
Вбудована бібліотека libzip видалена. Тепер обов'язково наявність у системі бібліотеки libzip >= 0.11, щоб зібрати модуль zip