Изменения, ломающие обратную совместимость
Несмотря на то, что большая часть существующего кода PHP 5
должна работать без изменений, всё же ознакомьтесь с
некоторыми изменениями, которые могут сказаться на
обратной совместимости:
Ключи массива не будут перезаписаны при определении массива как свойства класса через литерал массива
Ранее в массивах, заданные как свойства класса со
смешанными явными и неявными ключами, элементы с
явно заданными ключами могли молча перезаписываться, если
явный ключ пересекался с последовательным неявным
ключом. Например:
Теперь json_decode() в соответствии со
спецификацией JSON отклоняет JSON литералы
true
, false
и
null
, заданные не строго в нижнем регистре,
и, соответственно, устанавливает
json_last_error(). Ранее данные,
передаваемые в json_decode() и
содержащие исключительно одно из этих значений в верхнем
или смешанном регистре, принимались.
Это изменение повлияет только в случае передачи в
json_decode() некорректного JSON. В
случае корректно сформированного JSON, никакого эффекта
не будет.
Теперь потоковые обёртки по умолчанию проверяют
сертификаты точек при использовании SSL/TLS
Все шифруемые клиентские потоки теперь по умолчанию включают проверку пиров.
По умолчанию сертификат
пира проверяется пакетом OpenSSL CA. Обычно не нужно ничего делать для
соединения с серверами с правильным SSL-сертификатом, так как
OpenSSL настроен так, что уже работает с хорошими CA-пакетами.
Стандартный CA пакет может быть переопределён глобально с помощью
установки или openssl.cafile или openssl.capath строк конфигурации,
или же на уровне каждого запроса используя опции контекста
cafile
или
capath
.
Хотя это и не рекомендуется, но можно отключить проверку сертификата пира
для запроса, установив verify_peer
опцию контекста в false
, и можно отключить проверку имени пира, установив
verify_peer_name
в false
.
Теперь ресурсы GMP являются объектами
Теперь ресурсы GMP
является объектами. Функциональное API, реализованное в
модуле GMP, осталось без изменений. Существующий код
должен заработать без изменений, только если в нем явно не
использовались проверки на ресурс
is_resource() или что-то подобное.
Теперь функция
Mcrypt требует
корректные ключи и IV
mcrypt_encrypt(), mcrypt_decrypt(),
mcrypt_cbc(), mcrypt_cfb(),
mcrypt_ecb(), mcrypt_generic() и
mcrypt_ofb() больше не принимают ключи
и IV с некорректной длиной, а режимы блочного шифра,
требующие IV, будут завершаться с ошибкой, если его не
передать.
Загрузка файлов с помощью cURL
Теперь загрузка с использованием синтаксиса @file требует
установки CURLOPT_SAFE_UPLOAD в значение false
.
Вместо этого следует использовать CURLFile.