MySQL is used as database but does not support 4-byte characters. To be able to handle 4-byte characters (like emojis) without issues in filenames or comments for example it is recommended to enable the 4-byte support in MySQL. For further details read the documentation page about this.環境:
CentOS 7.6.1810
Apache 2.4.38-1
PHP 7.2.17-1
MariaDB 5.5.60-1
Nextcloud 15.0.7
以下URLの MariaDB 10.2 or earlier を実施しましたが、うまくいかない部分もありました。
https://docs.nextcloud.com/server/15/admin_manual/configuration_database/mysql_4byte_support.html
[root@server ~]# vi /etc/my.cnf [mysqld] に以下を追加 innodb_large_prefix=true innodb_file_format=barracuda innodb_file_per_table=1 [root@server ~]# systemctl restart mariadb.service [root@server ~]# mysql -u root -p Enter password: MariaDB [(none)]> SELECT NAME, SPACE, FILE_FORMAT FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE NAME like "nextcloud%"; ERROR 1054 (42S22): Unknown column 'FILE_FORMAT' in 'field list'上記のようにエラーとなったが、そのまま以降の手順を実施。
MariaDB [(none)]> ALTER DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; Query OK, 1 row affected (0.01 sec) MariaDB [(none)]> quit Bye [root@server ~]# cd /var/www/html/nextcloud/ [root@server nextcloud]# sudo -u apache php occ config:system:set mysql.utf8mb4 --type boolean --value="true" System config value mysql.utf8mb4 set to boolean true [root@server nextcloud]# sudo -u apache php occ maintenance:repair
ファイル名に絵文字が使えるようになりました。
成功したようです。
URL先には以下の記載もあり、バックアップする際はオプションを付けないといけないようです。
Also make sure your backup strategy still work. If you use mysqldump make sure to add the --default-character-set=utf8mb4 option. Otherwise your backups are broken and restoring them will result in ? instead of the emojis, making files inaccessible.