我有 php 文件模板,我需要填写一些数据并导出为“rendered_view.php”。它需要每天自动完成。所以我正在尝试使用 Laravel 调度程序。
所以我有:
查看“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');
控制台/内核.php
$schedule->call(function() {
(new MiscController())->testRenderView();
})->daily()->at('13:00');
场景 1:如果我导航到127.0.0.1:8000/testRenderView,它正在工作,并且文件 render_view.php 保存在公用文件夹中,其中包含预期的内容:
<?
$someVariable = "123456";
require_once("includes/php_file.php");
?>
场景二:如果被调度器执行(13:00),返回错误:
local.ERROR: Illuminate\View\Engines\PhpEngine::main(): 无法打开所需的 'includes/php_file.php' (include_path='.:') {"exception":"[object] (Symfony\Component\Debug \Exception\FatalErrorException(code: 64): Illuminate\View\Engines\PhpEngine::main(): 未能打开所需的 'includes/php_file.php' (include_path='.:')
看起来当它从调度程序执行时,Laravel 尝试将视图呈现为真实视图。我也尝试创建工匠命令,但行为是相同的。当我在控制台上执行命令时工作正常,但当我从调度程序调用命令时却不行。知道为什么会这样吗?