PHP7.1のサーバで独自CMSの仮組みを作ることになったので、とりまLaravel + Voyagerで作ろうとしたところ
と全く同じ問題が発生。
どうも、https://*****.***/admin/voyager-assets?path=**** でエラーが発生している模様。
PHP7.1から動かせないので、Laravelのバージョンを5にせざるを得ずに、Laravel5だからVoyagerもバージョン1.3でないと動かないと公式に書かれているので、各々のバージョンはあってるはず。
今ならLaravel8とかVoyagerも1.4とか最新版にすればこういうバグは解消されてるんでしょうけども、あいにくサーバ環境は変更できず。
ということでVoyagerのソースを見つつ、解決策模索。
で調べた結果、GETパラメータが上手く渡せずにファイルの確認処理でエラーが発生しているという感じ。
なので、こんな感じで直接GETパラメータを渡してやれば解決しました。
./vendor/tcg/voyager/src/Http/Controllers/VoyagerController.php の76行目付近
public function assets(Request $request)
{
- $path = Str::start(str_replace(['../', './'], '', urldecode($request->requestUri)),"/");
+ $path = Str::start(str_replace(['../', './'], '', urldecode($_GET["path"])),"/");
~~~~~
もしかするとnginxの方でlocationの設定とかしてやればよかったのかもしれないけど、とりあえず動くからこれでいいかと思う次第。
ネットで検索しても解決策が出てこなかったし、いつかまた同じようなことが起こったときの為の備忘録なう。