我正在我的 Laravel 应用程序中构建一个类似 cron 的功能。为了确保多个启动请求中只有 1 个实例运行,我对 Shell 脚本进行 cron 调用,该脚本最终执行 PHP 文件。
在此 PHP 文件中当然需要访问 Laravel 的内置函数和 Facades。目前我需要 public/index.php
文件来引导 Laravel 环境。一切工作正常,我能够与 Laravel 环境进行交互。但是,它也会在每次启动时产生错误:
local.ERROR: exception 'Symfony\Component\HttpKernel\Exception\NotFoundHttpException' in
/PATH_TO_LARAVEL/vendor/laravel/framework/src/Illuminate/Routing/RouteCollection.php:140
如何防止抛出此错误?或者还有其他方式引导 Laravel 吗?
我还尝试分别要求 bootstrap/autoload.php
和 bootstrap/start.php
文件,但环境似乎没有被引导。
谢谢。
最佳答案
诀窍在于,您需要同时使用 ./bootstrap/autoload.php
和 ./bootstrap/start.php
脚本来启动 Laravel 环境.
尝试创建一个文件:./bootstrap/cronloader.php
:
<?php
// Laravel Autoloader
require __DIR__.'/autoload.php';
// Start Laravel
require_once __DIR__.'/start.php';
然后只需在脚本开头require_once
即可。
或者,写一个 artisan command替换你的脚本?因为你可以直接从 cron 调用 artisan,它会给你完整的 laravel 环境。
关于php - 引导 Laravel 环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22734210/