Laravelに移行中。
ローカル開発環境でデバッグしてると、Storageにツッコんだファイルが見れないので困ってた。
しょせん、PHPなので期待してはいけない。
よくある解決策
artisan storage:link
これで、ストレージがリンクされるから見れるはずだよ。っていうんだけど、うん見えないんだよ。
本当の原因
Stroage::url
Storage::url が返すURLがAPP_URL を見ているので、artisan serve のポートを書かないといけない。
artisan serve コマンドを上書きする。
artisan make:command MyServer
で、自作の起動スクリプトを作って、次のように、上書きする。
<?php namespace App\Console\Commands; use Illuminate\Foundation\Console\ServeCommand; class MyServer extends ServeCommand { /** * Get the full server command. * @return string */ protected function serverCommand() { // ini ファイルを読み込む $ini_scan_dir = base_path(); $addtional_env = " PHP_INI_SCAN_DIR=:$ini_scan_dir "; // serve のときは.envを無視してAPP_URLを直接渡す。 $addtional_env .= " APP_URL=http://{$this->host()}:{$this->port()} "; $cmd = parent::serverCommand(); $cmd = $addtional_env.$cmd; return $cmd; } }
artisan serve を上書きして解決する問題。
artisan serve はメインで使うように設計されてないのだろう。みんなはHomesteadでやってるから多分永遠に気づかれない。
php の phpinfoで出てくる 設定の php.ini を直接書き換えるのは面倒なので、.user.ini
でやって xdebugを有効にしたり xdebug.idekey を書いたり出来るんだけど、そういうことはマイナーらしくてやらないんですね。。。。