1.数据库应该使用utf8mb4,用来对应汉字中的生僻字

创建数据库后
cretae database XXX;
后应该使用
set character_set_client=utf8mb4
设置字符集,当数据库支持字符集并且laravel中config也设置为mb4才会生效

  1. 'mysql' => [
  2. 'driver' => 'mysql',
  3. 'url' => env('DATABASE_URL'),
  4. 'host' => env('DB_HOST', '127.0.0.1'),
  5. 'port' => env('DB_PORT', '3306'),
  6. 'database' => env('DB_DATABASE', 'forge'),
  7. 'username' => env('DB_USERNAME', 'forge'),
  8. 'password' => env('DB_PASSWORD', ''),
  9. 'unix_socket' => env('DB_SOCKET', ''),
  10. 'charset' => 'utf8mb4',
  11. 'collation' => 'utf8mb4_unicode_ci',
  12. 'prefix' => '',
  13. 'prefix_indexes' => true,
  14. 'strict' => true,
  15. 'engine' => null,
  16. 'options' => extension_loaded('pdo_mysql') ? array_filter([
  17. PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
  18. ]) : [],
  19. ],

2.数据库使用mb4编码后,在访问时会因为兼容问题报错

image.png
这个时候要指定PHP版本为对应使用项目的PHP版本要求以上

  1. //安装PHP7.3
  2. apt-get install -y php7.3 php7.3-common php7.3-mbstring php7.3-mysql php7.3-xml php7.3-gd php7.3-curl php7.3-json php7.3-fpm php7.3-zip libapache2-mod-php7.3 php7.3-xdebug
  3. update-alternatives --config php
  4. // 修改vim /etc/apache2/sites-available/xxxx.conf
  5. <VirtualHost *:80>
  6. ServerName xxx.com
  7. DocumentRoot /var/www/html/xxx
  8. ####加载不同的php版本####
  9. <FilesMatch \.php$>
  10. SetHandler "proxy:unix:/run/php/php7.3-fpm.sock|fcgi://localhost"
  11. </FilesMatch>
  12. ####加载不同的php版本####
  13. </VirtualHost>

同时,再启用以下两个模块
a2enmod proxy proxy_fcgi
重新加载:service apache2 reload
重启:service apache2 restart

备注:
update-alternatives —config php
这是设置PHP系统默认使用版本的,和composer和php artisan之类的命令相关
a2enmod php7.1
a2dismod php7.1
这是apache默认解析项目使用的php版本

配置了fcgi后就可以设置不同项目使用不同的php版本,而不是每次手动切换