削除した/移動したはずのファイルを探して「No such file or directory」でサーバーが起動しない!autoloadファイルが更新されていない時の対処方
git mv *** を頻繁にやっていると、autoloadファイルが更新されずにサーバーが起動できなかったりすることがあるのでメモ
例えばこんな感じでパスを変更したとして
git mv /aaa/bbb/ccc.php /aaa/ddd/ccc.php
このようなエラーが出たとする
$ php artisan serve In ClassLoader.php line 444: include(/aaa/bbb/ccc.php): failed to open stream: No such file or directory
この場合、 [~/vendor/composer/autoload_classmap.php] の設定が正常に書き換わってくれていないので自動で治してやる。
composerのコマンドを使う。以下のどちらでも良い。
- dump-autoload
- dumpautoload
$ composer dump-autoload Generating optimized autoload files > Illuminate\Foundation\ComposerScripts::postAutoloadDump > php artisan package:discover Discovered Package: barryvdh/laravel-ide-helper Discovered Package: fideloper/proxy Discovered Package: intervention/image Discovered Package: laravel/tinker Discovered Package: nesbot/carbon Package manifest generated successfully.
これでもう一度サーバーを起動してやれば直っているはず。
rabbitmq.cluster.confのrabbit@xxxのxxxはコンテナ名っぽい
rabbitmq.cluster.conf に設定していたこの辺
# cluster_formation.peer_discovery_backend = rabbit_peer_discovery_classic_config # cluster_formation.classic_config.nodes.1 = rabbit@hostname_01 cluster_formation.classic_config.nodes.2 = rabbit@hostname_02 # cluster_formation.classic_config.nodes.3 = rabbit3@hostname # cluster_formation.classic_config.nodes.4 = rabbit4@hostname
てっきりhostnameを見てクラスタリングしてくれるものと思っていたけど、実はコンテナ名を見ていたみたい。
なので、 docker-compose.yml に↓を追加してやると解決した。
container_name: hostname_01 # またはhostname_02
特定のポートを開いているプロセスを殺す
特定のポートで実行中のプロセスを調べる
$ lsof -i:3314 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME com.docke 771 user_name 20u IPv4 0x6e99dd572d5a95e7 0t0 TCP *:uohost (LISTEN) com.docke 771 user_name 21u IPv6 0x6e99dd572593ae5f 0t0 TCP localhost:uohost (LISTEN)
lsof
コマンドを使います
今回つけているオプションは -i:xxxx
で、これはポート番号を指定しています
結果に出てくる項目は
COMMAND:プロセスが実行しているコマンド(プログラム) PID:そのポートを利用しているプロセスのID USER:プロセスの実行ユーザー FD:ファイルディスクリプター TYPE:ファイルの種別 DEVICE:デバイスID SIZE/OFF:ファイルのサイズまたはオフセット NODE:プロトコル NAME:ポート名
という感じ
NAMEについている (LISTEM)
は待ち受け状態であることを表している
特定のプロセスを殺す
$ kill -9 771
kill
コマンドを使います
基本は kill PID
です
-9
コマンドは強制終了
ちなみに、 -0
オプションをつけるとプロセスを殺さずに存在確認だけができます
プロセスが存在すると出力はなく、プロセスが存在しないとエラーメッセージがかえってきます