経緯
symfony4の勉強しようと思っても買った本のコマンドをコピペするとsymfony5が入ってきて、微妙に仕様が変わっているのであえてバージョン指定したかった。
なお、2022-9-8現在、DB操作に必要なクラスがどうやっても動きませんでした。
特定のライブラリをダウングレードすれば動くとあるけど、それでも動かないので他もサポート切れてるかも?
勉強するだけなら諦めて5をインストールしたほうがよさそうです。
インストールコマンド
バージョンを指定するにはインストールコマンドの最後にスペースあけてバージョン番号を書く。
ところがzshの場合これではアスタリスクが想定外の解釈を起こすらしくエラーになるので、ここだけbashにして終わったらzshに戻す。
(他の解説サイトでは.zshrcを書き換えていたけど、今回は一行動かすだけだしこれでいいかな、と。)
bash
composer create-project symfony/website-skelton project_name 4.4.*
zsh
簡易サーバを使いたい場合は以下のコマンドで追加のインストールが必要になっている。
cd project_name
composer require symfony/web-server-bundle --dev
これをしないと
bin/console server:run
しても以下のエラーでサーバが起動しない。
Command "server:run" is not defined.
Did you mean one of these?
dbal:run-sql
server:dump
server:log
MAMPとかちゃんとしたhttpdソフト使うなら不要だけど、使い捨てのプロジェクトにvertual hostの設定するのも億劫だったりするのであると便利。
DB設定
プロジェクトルートフォルダにある .envを自身の環境に合わせて書き換える。
.env
勉強用の場合、以下の行を有効化して他のDATABASE_URL=で始まる行を#でコメントアウトするだけでいい。
DATABASE_URL="sqlite:///%kernel.project_dir%/var/data.db"
ormライブラリをダウングレードする
bin/console make:entity すると
以下のエラーで動きませんでした。
Class Doctrine\Persistence\Mapping\Driver\AnnotationDriver does not exist
symfony 4.4 のサポートが終了したため、symfony 5.4 に移行するまでは composer.json を変更し、doctrine/orm を 2.11 にダウングレードする必要があります。
出典:https://github.com/symfony/symfony/discussions/46403
だそうです。
この参考ページにcomposer.jsonを書き換えてupgradeすれば治るとかいてありますが、
そのとおりやっても動きませんでした。