You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在自定义PHP脚本中访问Laravel类

在独立脚本中引入Laravel核心类与模型的方法

要让独立于Laravel应用的crontab脚本能使用Carbon、模型、DB等Laravel组件,核心是在脚本中初始化Laravel应用环境,具体步骤如下:

1. 编写独立脚本并加载Laravel核心

在你的项目目录下新建脚本文件(比如scripts/daily_check.php),开头先加载Laravel的自动加载器与应用引导文件,完成环境初始化:

<?php

// 加载Composer自动加载器
require __DIR__ . '/../vendor/autoload.php';

// 引入Laravel应用引导文件
$app = require_once __DIR__ . '/../bootstrap/app.php';

// 启动Laravel内核,加载所有服务提供者
$kernel = $app->make(Illuminate\Contracts\Console\Kernel::class);
$kernel->bootstrap();

2. 引入并使用所需类

环境初始化完成后,就可以像在Laravel控制器中一样引入并使用各类组件:

// 引入Carbon
use Carbon\Carbon;
// 引入自定义模型
use App\Models\YourTargetModel;
// 引入DB门面
use Illuminate\Support\Facades\DB;

// 示例:获取当前时间
$now = Carbon::now();
echo "脚本执行时间:{$now->toDateTimeString()}\n";

// 示例:查询模型数据
$expiredItems = YourTargetModel::where('expire_at', '<', $now)->get();
foreach ($expiredItems as $item) {
    // 处理逻辑
    echo "处理过期数据:{$item->id}\n";
}

// 示例:使用DB门面执行原生SQL
$count = DB::table('your_table')->where('status', 1)->count();
echo "状态为1的数据总数:{$count}\n";

3. 配置crontab任务

编辑crontab定时任务,指定每日午夜执行脚本:

# 打开crontab编辑界面
crontab -e

# 添加以下任务(替换为你的脚本实际路径)
0 0 * * * php /path/to/your/laravel/project/scripts/daily_check.php >> /var/log/laravel_daily_check.log 2>&1
  • 0 0 * * * 表示每日午夜执行
  • >> /var/log/laravel_daily_check.log 2>&1 用于将脚本输出与错误信息写入日志,方便排查问题

注意事项

  • 确保脚本路径正确,避免因相对路径导致文件找不到
  • 运行crontab的用户需拥有脚本及Laravel项目的读写权限,建议使用与Laravel应用一致的用户(比如www-data)
  • 若需要指定环境(如生产环境),可在脚本开头添加putenv('APP_ENV=production');,或在crontab任务中设置环境变量

内容的提问来源于stack exchange,提问作者oliver davidson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 03:25:21