我想将旧网站(php 5.6)从 Debian 8.10 迁移到 Ubuntu 16.04.3 服务器。
apache 配置已导出到新服务器,并且 mysql 数据库托管在另一台服务器上:没有变化。
迁移后,数据库中的重音符号显示为:“é”。该问题仅在数据库中获取数据时出现。
这些字符在数据库中也显示原样,但在旧网站上,它可以在网络浏览器中正确显示。
数据库是 mariaDB 10.0.31,排序规则为:latin1。
我不能触碰数据库和 php 代码。
PHP / apache 配置相同。只是托管系统不同。为什么字符解释不同?
我在 vhost 配置中尝试了这些选项:CharsetDefault UTF-8 AddDefaultCharset UTF-8 AddCharset UTF-8 .utf8
我也尝试更改语言环境:en_US.UTF-8 fr_FR.UTF-8
但没有改变效果...
任何想法 ?
感谢您的帮助 !
旧配置:PHP 5.6.30-0+deb8u1 Apache/2.4.10 Debian 8.10
新配置:PHP 5.6.32-1+ubuntu16.04.1+deb.sury.org+2 Apache/2.4.18 Ubuntu 16.04.3
虚拟主机:
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /var/www-HIDDEN
ServerName yyy.HIDDEN.fr
ScriptAlias /cgi-bin/ /var/www/cgi-bin/
<Directory /var/HIDDEN/>
AllowOverride All
Options Indexes FollowSymLinks
Require all granted
Order allow,deny
allow from all
</Directory>
<IfModule mod_php5.c>
AddType application/x-httpd-php .php
php_flag magic_quotes_gpc Off
php_flag track_vars On
php_flag register_globals Off
php_value include_path .
</IfModule>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
新服务器上的区域设置:
root@ubuntu16:~# locale
LANG=fr_FR.UTF-8
LANGUAGE=
LC_CTYPE="fr_FR.UTF-8"
LC_NUMERIC="fr_FR.UTF-8"
LC_TIME="fr_FR.UTF-8"
LC_COLLATE="fr_FR.UTF-8"
LC_MONETARY="fr_FR.UTF-8"
LC_MESSAGES="fr_FR.UTF-8"
LC_PAPER="fr_FR.UTF-8"
LC_NAME="fr_FR.UTF-8"
LC_ADDRESS="fr_FR.UTF-8"
LC_TELEPHONE="fr_FR.UTF-8"
LC_MEASUREMENT="fr_FR.UTF-8"
LC_IDENTIFICATION="fr_FR.UTF-8"
LC_ALL=
旧服务器上的区域设置:
root@debian8:~# locale
LANG=fr_FR.UTF-8
LANGUAGE=
LC_CTYPE="fr_FR.UTF-8"
LC_NUMERIC="fr_FR.UTF-8"
LC_TIME="fr_FR.UTF-8"
LC_COLLATE="fr_FR.UTF-8"
LC_MONETARY="fr_FR.UTF-8"
LC_MESSAGES="fr_FR.UTF-8"
LC_PAPER="fr_FR.UTF-8"
LC_NAME="fr_FR.UTF-8"
LC_ADDRESS="fr_FR.UTF-8"
LC_TELEPHONE="fr_FR.UTF-8"
LC_MEASUREMENT="fr_FR.UTF-8"
LC_IDENTIFICATION="fr_FR.UTF-8"
LC_ALL=
但是,这个值存在同样的问题:en_US.UTF-8