Други промени
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Други промени
Референца за `migration85.other-changes.php` со подобрена типографија и навигација.
Други промени
Core промени
Јадро
Тајмерот со висока резолуција (hrtime()) на macOS сега користи препорачано
clock_gettime_nsec_np(CLOCK_UPTIME_RAW) API наместо
mach_absolute_time().
CGI/CLI
На -z or --zend-extension опцијата е отстранета бидејќи беше нефункционална. Користи -d zend_extension=[path] instead.
PDO_ODBC
Однесувањето при преземање за поголеми колони е променето. Наместо да презема блокови од 256 бајти, PDO_ODBC ќе се обиде да преземе поголема големина на блок; моментално, ова е големината на страницата минус преоптоварувањето на низата. Возачите што враќаат SQL_NO_TOTAL во SQLGetData исто така се подобро обработени. Ова треба да ја подобри компатибилноста и перформансите.
Промени во SAPI модули
CLI
Обидот да се постави наслов на процес што е предолг со cli_set_process_title() сега ќе пропадне наместо тивко да го скрати дадениот наслов.
Додадена е нова --ini=diff опција за печатење INI поставки променети од вградената стандардна вредност.
FPM
FPM со httpd ProxyPass опционално ги декодира целосната патека на скриптата. Додадено е INI поставување fastcgi.script_path_encoded за да се спречи ова ново однесување.
Ограничувањето на дневникот за пристап на FPM сега се почитува log_limit value.
Променети функции
Меѓународен
grapheme_extract() правилно доделува
$next вредност при прескокнување на невалидни почетни бајти. Претходно имаше случаи кога ќе укажуваше на почетокот на границата на графемата наместо на крајот.
transliterator_get_error_code(),
transliterator_get_error_message(),
TransLiterator::getErrorCode()Препорачаниот начин за избегнување на SQL инјекција е со врзување на сите податоци преку подготвени изрази. Користењето на параметризирани прашања не е доволно за целосно избегнување на SQL инјекција, но тоа е најлесниот и најбезбедниот начин за обезбедување влез во SQL изразите. Сите динамични литерали на податоци во TransLiterator::getErrorMessage()
се отфрлени false од унијата на типот на враќање. Враќање false
всушност никогаш не беше можно.
Следните функции сега поддржуваат $locale аргумент:
grapheme_strpos(),
grapheme_stripos(),
grapheme_strrpos(),
grapheme_strripos(),
grapheme_substr(),
grapheme_strstr() and
grapheme_stristr()
LDAP
ldap_get_option() сега прифаќа null врска, како ldap_set_option(), за да се овозможи преземање на глобални опции.
libxml
libxml_set_external_entity_loader() сега има формален тип на враќање од true.
OpenSSL
openssl_public_encrypt() and
openssl_private_decrypt() имаат нов параметар
$digest_algo што овозможува специфицирање на алгоритмот за хеш дигест за OAEP подлога.
openssl_sign() and openssl_verify()
имаат нов параметар $padding за да се овозможи користење на посигурна RSA PSS подлога.
openssl_cms_encrypt() $cipher_algo
параметарот може да биде стринг со името на шифрата. Тоа овозможува користење на повеќе алгоритми вклучувајќи AES GCM шифрирачки алгоритми за автентицирани завиткани податоци.
PCNTL
pcntl_exec() сега има формален тип на враќање од false.
pcntl_waitid() прифаќа дополнителен аргумент resource_usage за собирање на различни специфични метрики за платформата за процесот на детето.
PDO_PGSQL
Pdo\Pgsql::copyFromArray() сега поддржува iterable inputs.
Pdo\Pgsql::setAttribute() and
Pdo\Pgsql::prepare() поддржува поставување
PDO::ATTR_PREFETCH на 0 што влегува во режим на мрзливо преземање. Во овој режим, изјавите не можат да се извршуваат паралелно.
PostgreSQL
pg_copy_from() сега поддржува iterable inputs.
pg_connect() проверува дали аргументот connection_string содржи бајт нула.
pg_close_stmt() проверува дали аргументот statement_name содржи бајт нула.
POSIX
posix_ttyname() го поставува last_error на EBADF кога ќе наиде на неважечки дескриптор на датотека.
posix_isatty() крева E_WARNING
порака кога ќе наиде на неважечки дескриптор на датотека.
posix_fpathconf() проверува неважечки дескриптори на датотеки и го поставува last_error на EBADF и покренува E_WARNING message.
Рефлексија
Излезот од ReflectionClass::__toString() за enums е променет за подобро да укаже дека класата е enum, и дека случаите на enum се случаи на enum наместо нормални константи на класа.
Излезот од (стандардно) ќе го направи спротивното. за својства со куки е променет за да укаже какви куки има својството, дали тие куки се конечни и дали својството е виртуелно. Ова исто така влијае на излезот на ReflectionClass::__toString() кога класата содржи својства со куки.
Приклучоци
socket_create()/socket_bind() може да создаде AF_PACKET семејни сокети.
socket_getsockname() го добива индексот на интерфејсот и неговата текстуална репрезентација со AF_PACKET socket.
(libcurl >= 8.7.0),
На $use_include_path аргумент за
gzfile(), gzopen() and
readgzfile() функции е променет од int to bool.
gzfile(), gzopen() and readgzfile() функциите сега ги почитуваат стандардните контексти на стримот.
Други промени во екстензиите
cURL
curl_setopt() with
CURLOPT_FOLLOWLOCATION вредноста на опцијата веќе не се третира како булова, туку како цел број за да се справи со
CURLFOLLOW_OBEYCODE and
CURLFOLLOW_FIRSTONLY.
да провери дали дадена датотека е валидна слика. Користете наменско решение како што е
Датотеката е надградена од 5.45 на 5.46.
Типот на враќање на finfo_close() Стандардната вредност на true, наместо bool.
Меѓународен
Внатрешниот механизам за грешки на Intl е модернизиран за да укажува попрецизно кое место на повикување предизвикало каква грешка. Покрај тоа, некои исклучоци од ext/date се завиткани во IntlException now.
Lexbor
Се додава секогаш овозможена lexbor екстензија. Таа го содржи lexbor библиотеката што беше одвоена од ext/dom за повторна употреба меѓу други екстензии. Новата екстензија не е директно изложена на userland.
DOMImplementation::getFeature()
На Opcache екстензија сега секогаш е вградена во PHP бинарниот фајл и секогаш се вчитува. INI директивите opcache.enable and opcache.enable_cli сè уште се почитуваат.
PCRE
Надградена pcre2lib од 10.44 на 10.46.
PDO_Sqlite
Зголичена минимална верзија на поддршка од 3.7.7 на 3.7.17.
script.bat -h
Типовите на враќање на readline_add_history(), readline_clear_history()Препорачаниот начин за избегнување на SQL инјекција е со врзување на сите податоци преку подготвени изрази. Користењето на параметризирани прашања не е доволно за целосно избегнување на SQL инјекција, но тоа е најлесниот и најбезбедниот начин за обезбедување влез во SQL изразите. Сите динамични литерали на податоци во readline_callback_handler_install() се променети во true, наместо bool.
Рефлексија
ReflectionConstant веќе не е конечен.
Промени во ракувањето со INI датотеки
Јадро
Додадено fatal_error_backtraces за контрола дали фаталните грешки треба да вклучуваат backtrace.
Додадено INI поставување max_memory_limit само за стартување за контрола на максималниот memory_limit што може да се конфигурира при стартување или во тек на извршување. Надминувањето на оваа вредност испушта предупредување, освен ако не е поставено на -1, и наместо тоа го поставува memory_limit на тековниот max_memory_limit.
DOMImplementation::getFeature()
Додадено opcache.file_cache_read_only за поддршка на само за читање
opcache.file_cache директориум, за употреба со системи за датотеки само за читање (на пр. Docker контејнери само за читање). Најдобро се користи со opcache.validate_timestamps=0,
opcache.enable_file_override=1Препорачаниот начин за избегнување на SQL инјекција е со врзување на сите податоци преку подготвени изрази. Користењето на параметризирани прашања не е доволно за целосно избегнување на SQL инјекција, но тоа е најлесниот и најбезбедниот начин за обезбедување влез во SQL изразите. Сите динамични литерали на податоци во opcache.file_cache_consistency_checks=0.
Забелешка: Кеш генериран со различна верзија на PHP, различна патека до датотеката или различни поставки (вклучувајќи кои екстензии се вчитани), може да биде игнориран.
а исечувањето со праг сега користи ист алгоритам како системската libgd. opcache.jit_hot_loop сега е 61 (прост број) за да се спречи да биде множител на броевите на итерациите на циклусот. Се препорачува овој параметар да биде поставен на прост број.
Промената на OPcache SHM кога веќе е поставена сега правилно ќе пријави неуспех наместо тивко да не прави ништо и да прикажува погрешни вредности во PHPInfo. opcache.memory_consumption Додадено openssl.libctx за избор на типот на контекстот на OpenSSL библиотеката. Може да се користи или прилагоден libctx за секоја нишка или еден глобален (стандарден) libctx.
OpenSSL
Отстранете ги OPкодовите за споредби на идентитет со булови, особено за
Оваа функција е достапна кога PHP е поврзан со библиотеки на Oracle Database од верзија 10
Јадро
Додадете специјализација на OPкод за match(true) pattern.
Создавањето објекти за исклучоци сега е многу побрзо. === [] and
!== [] comparisons.
Деловите од кодот што користеа SSE2 се прилагодени да користат SIMD и со ARM NEON.
Воведен е TAILCALL VM, овозможен стандардно при компајлирање со Clang>=19 на x86_64 или aarch64. TAILCALL VM е исто толку брз како HYBRID VM што се користи при компајлирање со GCC. Ова ги прави PHP бинарните датотеки компајлирани со Clang>=19 исто толку брзи како бинарните датотеки компајлирани со GCC. Перформансите на CALL VM, што се користи со други компајлери, исто така значително се подобрија.
Сега се избегнува создавање дополнителни копии на низи при конвертирање низи за употреба во колатор.
Меѓународен
Подобрени перформанси на преземање TLS променливи во JIT-компилиран код во билдови што не се Glibc.
MBString
Воведен е TAILCALL VM, овозможен стандардно при компајлирање со Clang>=19 на x86_64 или aarch64. TAILCALL VM е исто толку брз како HYBRID VM што се користи при компајлирање со GCC. Ова ги прави PHP бинарните датотеки компајлирани со Clang>=19 исто толку брзи како бинарните датотеки компајлирани со GCC. Перформансите на CALL VM, што се користи со други компајлери, исто така значително се подобрија.
DOMImplementation::getFeature()
Подобрени перформанси на следниве методи:
Рефлексија
ReflectionProperty::isInitialized()
SPL
Подобрени перформанси на функциите на низите со повици ( SplFixedArray.
Стандардно
Подобрени перформанси наarray_find(), array_filter(), array_map(), usort(), ...).
Подобрени перформанси со безимени повторувања со избегнување создавање привремени низи и нивно повторно парсирање. urlencode() and rawurlencode().
Мали подобрувања во unpack() перформанси на пристап до својства.
Мали подобрувања во pack() performance.
перформанси и намалена потрошувачка на меморија. array_chunk() performance.