laravelで苦労した点2

日記
この記事は約4分で読めます。

laravelというかherokuのhttps化が原因です

前回jetstreamを入れましたが、この機能モリモリの認証パッケージにはプロフィール写真を変える機能があります。

宣伝:良かったら使って下さい。

メガホン

で、https化をcloudflareで実現した訳ですが、新しいプロフィール写真をアップロードすると404が返ってくる。
一時上手く動いていた気がしますが、先ほど触ったら404、ググっても外人さんも困っております。

ただその外人さんの意見の中で404ステータスを返す部分をコメントアウトしちゃえ!という物がありました。
ローカル環境では問題なく動いてますし、何ならherokuの独自ドメインの場合でもちゃんと動きます。
cloudflareを通してhttps化した時だけ上手く動かないのです。

やりましょう。
やり方は至ってシンプル。
コメントアウトすればいいだけです。
ただ、そのファイルがベンダーファイルなのでオーバーライドして書く必要があります。

laravelのベンダーファイルのオーバーライドの仕方は、ググったらすぐ出て来ました。

“autoload”: {
“psr-4”: {
“App\\”: “app/”,
“Database\\Factories\\”: “database/factories/”,
“Database\\Seeders\\”: “database/seeders/”
},
“exclude-from-classmap”: [
“vendor\\livewire\\livewire\\src\\Controllers\\FilePreviewHandler.php”, →変更点:1
“vendor\\livewire\\livewire\\src\\Controllers\\FileUploadHandler.php” →変更点:2
],
“files”:[
“app\\override\\livewire\\livewire\\src\\Controllers\\FilePreviewHandler.php”, →変更点:1
“app\\override\\livewire\\livewire\\src\\Controllers\\FileUploadHandler.php” →変更点:2
]
},

やり方はappフォルダの中にオーバーライド用のフォルダを作ってそのパッケージごとコピーして対象のファイルを上の様に書いてあげます。
パッケージごとコピーするのでそこまで必要があるのか不明ですが、ファイル単位でも出来ないかやってみます。
こんなんで404が消えるのか不安でしたが、無事オーバーライドされていました。
ちなみに変更した点は本当に些細な部分で下記の通りです。

class FileUploadHandler
{
public function getMiddleware()
{
return [[
‘middleware’ => FileUploadConfiguration::middleware(),
‘options’ => [],
]];
}

public function handle()
{
//abort_unless(request()->hasValidSignature(), 401); →ここをコメントアウトしただけ

$disk = FileUploadConfiguration::disk();

$filePaths = $this->validateAndStore(request(‘files’), $disk);

return [‘paths’ => $filePaths];
}

Stack Overflowなどを見るとnginxの設定で消せるのかもしれないです。
今回は緊急措置という感じです。

やってみたら気持ちモッサリしたので、他の方法があれば知りたいです。

コメント

タイトルとURLをコピーしました