いくつかのデータを入力して「rendered_view.php」としてエクスポートする必要があるphpファイルテンプレートがあります。毎日自動的に行う必要があります。だから私はLaravel Schedulerを使おうとしています。
ので、私は持っています:
「view_to_render.blade.php」を表示
<?
$someVariable = "{{$variable}}";
require_once("includes/php_file.php");
?>
コントローラー「MiscController.php」
public function testRenderView(){
file_put_contents(public_path('rendered_view.php'), view('view_to_render', ['variable' => '123456'])->render());
}
ルート
Route::get('testRenderView', 'MiscController@testRenderView');
コンソール/Kernel.php
$schedule->call(function() {
(new MiscController())->testRenderView();
})->daily()->at('13:00');
シナリオ 1: 127.0.0.1:8000/testRenderViewに移動すると、機能しており、ファイル render_view.php が期待されるコンテンツと共に public フォルダーに保存されます。
<?
$someVariable = "123456";
require_once("includes/php_file.php");
?>
シナリオ 2:スケジューラによって (13:00 に) 実行されると、エラーが返されます。
local.ERROR: Illuminate\View\Engines\PhpEngine::main(): 必要な 'includes/php_file.php' を開くのに失敗しました (include_path='.:') {"exception":"[object] (Symfony\Component\Debug \Exception\FatalErrorException(コード: 64): Illuminate\View\Engines\PhpEngine::main(): 必要な 'includes/php_file.php' (include_path='.:') を開くことができませんでした
スケジューラから実行されると、Laravel はビューを実際のビューとしてレンダリングしようとするようです。artisan コマンドも作成してみましたが、動作は同じです。コンソールでコマンドを実行すると正常に動作しますが、スケジューラからコマンドを呼び出すと動作しません。なぜそれが起こっているのですか?