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

Laravel Supervisor执行schedule:work报错“could not open file: artisan”

问题解决:Supervisor运行Laravel schedule:work报"could not open file: artisan"错误

问题描述

生产服务器通过Supervisor管理两个Laravel后台任务:

  • php artisan queue:work 运行正常
  • php artisan schedule:work 抛出could not open file: artisan错误

相关配置及代码如下:

Supervisor配置

[program:influencer-queue-worker]
process_name=%(program_name)s_%(process_num)02d
command=php8.1 /home/scodus/domains/influencer.scodus.com/public_html/artisan queue:work --sleep=3 --tries=1
autostart=true
autorestart=true
user=scodus
numprocs=1
redirect_stderr=true
stdout_logfile=/home/scodus/domains/influencer.scodus.com/queue.log

[program:influencer-schedule-worker]
process_name=%(program_name)s_%(process_num)02d
command=php8.1 /home/scodus/domains/influencer.scodus.com/public_html/artisan schedule:work
autostart=true
autorestart=true
user=scodus
numprocs=1
redirect_stderr=true
stdout_logfile=/home/scodus/domains/influencer.scodus.com/schedule.log

Console/Kernel.php代码

protected function schedule(Schedule $schedule)
{
    $schedule->command('inspire')->everyMinute()->sendOutputTo(storage_path('logs/inspire.log'));
    $schedule->command('order:revenue-pending-to-available')->everyMinute();
    $schedule->command('order:cancel-without-requirements')->everyMinute();
    $schedule->command('order:autocomplete-delivery-attempted-orders')->everyMinute();
}

问题原因

queue:work通过绝对路径指定artisan能正常执行,但schedule:work运行时,Laravel需要在项目根目录环境下加载配置和依赖,仅指定artisan的绝对路径无法让进程识别项目根目录,导致找不到关联文件。

解决方案

修改Supervisor的schedule配置,添加directory参数指定Laravel项目根目录,确保进程在正确路径下执行命令:

[program:influencer-schedule-worker]
process_name=%(program_name)s_%(process_num)02d
command=php8.1 artisan schedule:work
directory=/home/scodus/domains/influencer.scodus.com/public_html
autostart=true
autorestart=true
user=scodus
numprocs=1
redirect_stderr=true
stdout_logfile=/home/scodus/domains/influencer.scodus.com/schedule.log

操作步骤

  1. 打开Supervisor配置文件(通常位于/etc/supervisor/conf.d/目录下)
  2. 给influencer-schedule-worker模块添加directory参数,值为artisan所在的项目根目录
  3. 将command中的artisan绝对路径改为相对路径artisan(保留绝对路径也可,但相对路径更规范)
  4. 更新并重启Supervisor服务:
    supervisorctl reread
    supervisorctl update
    supervisorctl restart influencer-schedule-worker
    

验证

重启后查看schedule.log日志,若无报错且定时任务按预期执行,则问题解决。

内容的提问来源于stack exchange,提问作者Technical Noob

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 07:03:27