Prestashop 1.7在安装过程中发出以下警告:
To avoid internationalization data inconsistencies upgrade the symfony/intl component.
如何在Ubuntu Ubuntu 16.04上升级symfony/intl
?
尝试:
composer update
在prestashop文件夹中,收到Composer could not find a composer.json file
当前我忽略了此警告,可以忽略它吗,我应该期待什么副作用?
答案 0 :(得分:1)
Symfony依靠ICU(Unicode国际组件),理想情况下,您希望您的版本与它们所需的版本匹配。
首先,check what is the latest version of the ICU可用,截至2019年6月,此版本为v64.2。
检查php -i
当前正在运行的ICU版本,并在intl
部分中查找要运行的ICU版本。
最后,根据PrestaShop版本检查所需的ICU版本:
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
接下来,下载此脚本以帮助我们并设置正确的权限:
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
最后,让我们使用php -i
再次检查当前的ICU版本。
现在您应该准备好了,希望对您有所帮助!
答案 1 :(得分:0)
我可以通过运行以下命令安装正确的版本:
curl -sS -o /tmp/icu.tar.gz -L http://download.icu-project.org/files/icu4c/62.1/icu4c-62_1-src.tgz && tar -zxf /tmp/icu.tar.gz -C /tmp && cd /tmp/icu/source && ./configure --prefix=/usr/local && make && sudo make install
然后
sudo pecl install intl
但是,我仍然看到错误消息:
为避免国际化数据不一致,请升级 symfony / intl组件。