Разработка
February 20, 2023
Создание проекта на Laravel 11
Краткая инструкция, как создать новый пустой проект на Laravel 11 под Windows.
Шаг 1. Настройка ПО:
- Установить и настроить сервер OSPanel или Laragon (рекомендую).
- Установить Composer указав путь к PHP (есть в папке с сервером).
- Установить NodeJS.
- Установить улучшенный терминал PowerShell 7.
- Установить IDE для разработки - PHPStorm (рекомендую) или VS Code.
Далее проверяем, чтобы в PATH были указаны пути к PHP, Composer и NodeJS. Если следовать указаниям установщиков, то это всё сделается автоматически. Возможно, понадобится перезагрузка компьютера.
Шаг 2. Создание нового проекта
Имея установленный Composer выполняем в Терминале следующую команду:
composer create-project laravel/laravel mysite.com cd mysite.com
Добавляем возможность регистрации и авторизации на основе Bootstrap 5:
composer require laravel/ui --dev php artisan ui bootstrap --auth
Выполняем установку необходимых плагинов:
npm install npm run dev
Заполняем свои данные для подключения к БД в фале .env
DB_CONNECTION=mysql DB_HOST=kghost.mysql.tools DB_PORT=3306 DB_DATABASE=my_database DB_USERNAME=my_admin DB_PASSWORD=sUper&PassWord
php artisan migrate
Готово, теперь открываем папку mysite.com в IDE и начинаем редактирование кода.
Шаг 3. Исправление ошибок
На некоторых хостингах может возникнуть вот такая ошибка во время работы с базой данных:
Ошибка SQLSTATE[42000]: Syntax error or access violation: 1231 Variable 'sql_mode' can't be set to the value of 'NO_AUTO_CREATE_USER'...
Нужно в файл config/database.php добавить 'modes':
'mysql' => [ 'driver' => 'mysql', 'url' => env('DATABASE_URL'), 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', '3306'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'unix_socket' => env('DB_SOCKET', ''), 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', 'prefix' => '', 'prefix_indexes' => true, 'strict' => true, 'engine' => 'InnoDb', 'modes' => [ 'ONLY_FULL_GROUP_BY', 'STRICT_TRANS_TABLES', 'NO_ZERO_IN_DATE', 'NO_ZERO_DATE', 'ERROR_FOR_DIVISION_BY_ZERO', 'NO_ENGINE_SUBSTITUTION', ], 'options' => extension_loaded('pdo_mysql') ? array_filter([ PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), ]) : [], ],
Обязательно укажите 'engine' => 'InnoDb',
чтобы в будущем не возникало ошибок (по умолчанию, эта опция не указана).
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 1000 bytes...
Для этого в файл app/Providers/AppServiceProvider.php добавляем код:
use Illuminate\Support\Facades\Schema; public function boot(): void { Schema::defaultStringLength(191); }