エラーでた
とりあえずWSL2のUbuntuにチュートリアルに従ってLuckyController.phpを書いて、
$ symfony server:start -d
サーバを起動した。
dockerは使っていないので、UbuntuのIPアドレスでないとアクセスできないので、
$ ip a
とかして、eth0に記載されてるIPアドレス確認して、
http://xxx.xxx.xxx.xxx.8000
にアクセス。
表題の通り、
"An exception occurred in driver: could not find driver"
などとエラーが出た。
※ ipコマンド叩けない場合は
$ sudo apt-get install net-tools
net-toolsとかインストールのこと
原因
projectのスケルトンインストールした時点でバンドルされている"Doctrine Migrations"がdevモードでは実際に接続されるのだとかなんだとか。
実際に、.envの初期値を確認すると
###> doctrine/doctrine-bundle ###
# Format described at https://www.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url
# IMPORTANT: You MUST configure your server version, either here or in config/packages/doctrine.yaml
#
# DATABASE_URL="sqlite:///%kernel.project_dir%/var/data.db"
# DATABASE_URL="mysql://db_user:db_password@127.0.0.1:3306/db_name?serverVersion=5.7"
DATABASE_URL="postgresql://db_user:db_password@127.0.0.1:5432/db_name?serverVersion=13&charset=utf8"
###< doctrine/doctrine-bundle ###
このように、postgresqlに接続するようになっている。
対応
Doctrine Migrationsを削除する方法もある見たいだけど、世界に挨拶したいだけで構成を治すのは面倒なので、
一旦、SQLiteで逃げておきたい。
###> doctrine/doctrine-bundle ###
# Format described at https://www.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url
# IMPORTANT: You MUST configure your server version, either here or in config/packages/doctrine.yaml
#
# DATABASE_URL="sqlite:///%kernel.project_dir%/var/data.db"
# DATABASE_URL="mysql://db_user:db_password@127.0.0.1:3306/db_name?serverVersion=5.7"
- DATABASE_URL="postgresql://db_user:db_password@127.0.0.1:5432/db_name?serverVersion=13&charset=utf8"
+ DATABASE_URL="sqlite:///%kernel.project_dir%/var/data.db"
###< doctrine/doctrine-bundle ###
物理的にファイルを生成しないと解消されないので、symfonyコマンドで以下のようにDBを作成
$ php bin/console doctrine:database:create
※ なんかエラー出る場合、php-sqliteがインストールできてないので以下の通りインストールすること
$ sudo apt-get install php-sqlite3
これで解消された。
参考:
Symfonyサーバーの起動時のPostgreSQLエラー
[PHP]Symfony 4 とデータベースを使ったCRUDアプリケーションの作り方