Symfony использует ICU (международные компоненты для Unicode), и в идеале вы хотите, чтобы ваша версия соответствовала требуемой версии.
Сначала проверьте, какая версия последняяиз ICU доступно, начиная с июня 2019 года, это v64.2.
Проверьте, какая версия ICU вы используете в настоящее время с php -i
и найдите свойintl
раздел, где вы найдете версию ICU, которую вы используете.
Наконец, проверьте, какая версия ICU вам понадобится, в зависимости от версии PrestaShop:
1.7.5.x - ICU v62.1
1.7.4.x - ICU v62.1
1.7.3.x - ICU v60.1
1.7.2.x - ICU v59.1
1.7.1.x - ICU v58.2
1.7.0.x - ICU v57.1
Хорошо, как только вы поняли это, давайте обновим ваш ICU до нужной версии, соответствующей вашей версии PrestaShop.
Найдите, какую версию пакета php-intl вы используете в данный момент:
sudo dpkg --get-selections | grep -v deinstall | grep '\-intl'
В моем случае это было php7.2-intl
, удалите его:
sudo apt-get remove php7.2-intl
Установите phpize:
sudo apt install php7.2-dev
Затем загрузите этот скрипт, который поможет нам, и настройтеght permissions:
sudo wget https://gist.githubusercontent.com/siffash/76676186de0ffc6eb6cbf89abc7a5e2f/raw/e45838b09ffa0700c6134f1b2da69884773aadc9/icu-install.sh
sudo chmod +x ./icu-install.sh
Проверьте доступные выпуски:
sudo ./icu-install.sh versions
Загрузите и установите интересующую вас версию (62.1 в нашем случае), этот шаг может занять некоторое время (~10-15 минут), в зависимости от возможностей вашего сервера:
sudo ./icu-install.sh install v62.1
После успешного завершения давайте отредактируем 20-intl.ini:
sudo touch /etc/php/7.2/cli/conf.d/20-intl.ini && sudo bash -c 'echo "extension=intl.so" > /etc/php/7.2/cli/conf.d/20-intl.ini' && sudo touch /etc/php/7.2/apache2/conf.d/20-intl.ini && sudo bash -c 'echo "extension=intl.so" > /etc/php/7.2/apache2/conf.d/20-intl.ini'
Перезапустите Apache2:
/etc/init.d/apache2 restart
Давайте очистимся, удалив папку установки и phpize:
sudo apt-get purge --auto-remove php7.2-dev
rm -rf /tmp/icu-install
Наконец, давайте еще раз проверим нашу текущую версию ICU с php -i
.
Теперь вы должны быть всепоставил, надеюсь это поможет!