数年放置していたVPSに、laravel5.8をインストールしたら、phpとMySQLのバージョンアップしないとダメだった…。
laravel5.8をインストールしようと思ったら、php7.0だった…。
しょうがない、アンインストールしてphp7.1をインストールし直そう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
-- バージョン確認 php -v PHP 7.0.27 (cli) (built: Jan 2 2018 12:12:41) ( NTS ) -- EPELとRemiリポジトリを追加 yum install epel-release rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm -- 古いバージョンを削除 yum remove php-* -- PHP7.1をインストール yum install --enablerepo=remi,remi-php71 php php-devel php-mbstring php-mcrypt php-gd php-xml php-intl php-pecl-xdebug php-bcmath php-mysqlnd php-zip -- バージョン確認 php --version PHP 7.1.27 (cli) (built: Mar 6 2019 09:06:23) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies with Xdebug v2.7.0, Copyright (c) 2002-2019, by Derick Rethans |
laravel5.8をインストールしたけど500エラーになる。PHP拡張足らなかったけ?と確認しても大丈夫だった。
1 2 3 4 5 6 7 8 9 |
php -m | grep -e openssl -e PDO -e mbstring -e tokenizer -e ^xml$ -e ctype -e json -e bcmath bcmath ctype json mbstring openssl PDO tokenizer xml |
apacheのerror_logを見てみると、phpバージョン問題っぽいな…。
PHP Parse error: syntax error, unexpected ‘=’ in /vendor/laravel/framework/src/Illuminate/Support/Arr.php on line 380
apacheを再起動したら、問題なく動作した。
やれやれ、Web開発者はサーバ管理もしないといけないから大変だよ。
さて、インストールも終わったしmigrationでテーブルでも作ろうとしたら、またエラー
1 2 3 4 5 6 |
php artisan migrate:fresh --seed Dropped all tables successfully. Migration table created successfully. Migrating: 2014_10_12_000000_create_users_table Illuminate\Database\QueryException : SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter table `users` add unique `users_email_unique`(`email`)) |
MySQLのバージョンが低いのが問題か…。
1. Laravel5.4から標準charasetがutf8mb4に変わった
標準charasetがutf8mb4となったことで1文字あたりの最大byte数が4bytesに増えた。
2. MySQL5.7.7未満ではユニーク制約を付けたカラムは最大767bytes
しょうがない、MySQLも新しくしよう。既存のMySQLをアンイストールしないとダメっぽい。
https://qiita.com/ritukiii/items/f4e2fbae5d6e7b1aa5f9
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
rpm -Uvh http://dev.mysql.com/get/mysql57-community-release-el6-7.noarch.rpm http://dev.mysql.com/get/mysql57-community-release-el6-7.noarch.rpm を取得中 エラー: 依存性の欠如: mysql-community-release は mysql57-community-release-el6-7.noarch と競合します。 # mysql5.6がインストールされている事を確認 yum list installed | grep mysql # 既存のMySQLを削除 yum remove mysql* # 公式リポジトリを追加 yum install http://dev.mysql.com/get/mysql57-community-release-el6-8.noarch.rpm # MySQL5.7本体をインストール yum -y install mysql-community-server # mysql起動 service mysqld start # 5.7にバージョンアップされた事を確認 mysqld --version mysqld Ver 5.7.25 for Linux on x86_64 (MySQL Community Server (GPL)) |
mysqlのrootのパスワードは、5.6のままだった。どっかに情報が保存されてたのかな?