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

DirectAdmin面板Cron jobs执行artisan schedule:run命令失效问题求助

问题排查及解决方案

核心错误是你当前使用HTTP请求执行Artisan命令的方式本身不符合Laravel的设计规范,以下是分步修复步骤:

  • Cron命令写法修复
    Laravel的schedule:run是CLI命令,必须通过PHP CLI执行,不能用wget发起HTTP请求调用。首先替换你的Cron任务命令为如下格式:
* * * * * /usr/bin/php /你的站点绝对路径/artisan schedule:run >> /dev/null 2>&1

路径替换说明:

  1. 先通过SSH执行which php获取你服务器PHP CLI的真实路径,部分DirectAdmin环境多PHP版本共存时路径类似/usr/local/php82/bin/php
  2. 将/你的站点绝对路径/artisan替换为artisan文件的实际绝对路径,比如你的站点存放在/home/用户名/domains/你的域名/localfiles/,就填写对应完整路径
  • 队列命令逻辑优化
    你当前Kernel.php中配置的$schedule->command('queue:work')->everyMinute();存在逻辑问题:queue:work默认是常驻进程,每分钟触发一次会重复生成大量进程占用服务器资源。建议修改为以下两种方案二选一:
  1. 若需要每次执行完队列中所有任务就退出:
$schedule->command('queue:work --stop-when-empty')->everyMinute();
  1. 若只需要每次处理1条队列任务:
$schedule->command('queue:work --once')->everyMinute();
  • 权限校验
    确保Cron执行用户(即你的DirectAdmin账号用户)对artisan文件有可执行权限,对storage、bootstrap/cache目录有读写权限,避免执行时报权限错误。
  • 调试方案
    如果修改后仍然不生效,暂时把Cron命令的输出重定向到日志文件排查错误:
* * * * * /usr/bin/php /你的站点绝对路径/artisan schedule:run >> /tmp/laravel_cron.log 2>&1

执行几分钟后查看/tmp/laravel_cron.log文件中的报错信息,即可定位具体问题。

  • 安全优化提示
    你当前把artisan文件放在web可访问的localfiles目录下存在安全风险,外部用户可直接下载artisan文件获取源码信息。建议调整站点目录结构,将artisan、app、vendor等核心文件放在web根目录之外,仅把public目录作为web访问根目录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 06:36:01