Мы используем подключаемый модуль бронирования на нашем сайте Wordpress, который использует библиотеки Sage Pay для обработки платежей. Недавно нам посоветовали перейти на PHP версии 7.1, однако при проверке совместимости обнаружилась ошибка mcrypt:
> The following plugins/themes are not compatible with PHP 7.1. Booking > Calendar See Errors > --------------------------------------------------------------------------------- FILE: /home/ . . . > /public_html/wp-content/plugins/booking.bl.7.1/inc/gateways/sage/wpbc-gw-sage.php > --------------------------------------------------------------------------------- FOUND 0 ERRORS AND 4 WARNINGS AFFECTING 2 LINES > --------------------------------------------------------------------------------- 1205 | WARNING | Function mcrypt_encrypt() is deprecated since PHP > 7.1; use OpenSSL instead 1205 | WARNING | Extension 'mcrypt' is deprecated since PHP 7.1 - use openssl (preferred) or pecl/mcrypt once > available instead. 1237 | WARNING | Function mcrypt_decrypt() is > deprecated since PHP 7.1; use OpenSSL instead 1237 | WARNING | > Extension 'mcrypt' is deprecated since PHP 7.1 - use openssl > (preferred) or pecl/mcrypt once available instead. > ---------------------------------------------------------------------------------
Как видите, в текущей версии плагина есть устаревшая функция. После обращения к кодировщикам плагинов по поводу проблемы мне сказали, что код нарушения является частью библиотек «Sage Pay» и что они, кодеры плагинов, должны дождаться, пока кодировщики основной ветки, то есть Sage Pay, исправят свои библиотеки, прежде чем делать модификации на их конце.
Я понимаю, что устаревшая функция была отмечена в другом месте на этом форуме, как здесь и здесь с основным отзывом о том, что mcrypt будет удален в PHP 7.2 и что пользователи этого кода должны перейти на openssl_encrypt. На самом деле предупреждение не мешает пользователям перейти на PHP 7.1, поскольку, если я правильно понимаю, устаревшая функция еще не удалена и, следовательно, все еще работает.
Так зачем я публикую этот пост. Что ж, поскольку ни одна из предыдущих тем не сообщала об этом как о потенциальной проблеме для пользователей Sage Pay и их последующих плагинов, я считаю, что уведомление поддержке Sage Pay должно быть сделано через этот форум.
mcrypt_decrypt()
по-прежнему доступен в PHP 7.2, но предупреждений об устаревании обычно достаточно, чтобы вызвать исключение в большинстве современных фреймворков. Недавно я обновил драйвер Sage Pay Omnipay для поддержки Sage Pay Form с использованиемopen_ssl
, и код для расшифровки может быть полезен (при условии, что вы не используете сам Omnipay): github.com/thephpleague/omnipay-sagepay/blob/master/src/Message/ Официальные SDK Sage Pay уже устарели и все еще используют устаревшие функции. - person Jason   schedule 14.10.2018