温馨提示×

ubuntu php怎么弄定时任务

小樊
42
2026-09-22 15:33:45
栏目: 编程语言

在 Ubuntu 上给 PHP 设置定时任务,通常是通过 crontab 来实现的。下面从基础到常见用法给你讲一遍。


一、确认 PHP 可用

先确认 PHP 命令行可用:

php -v

如果提示没有 php,可以安装:

sudo apt update
sudo apt install php-cli

二、写一个 PHP 脚本

例如:

mkdir -p /var/www/scripts
nano /var/www/scripts/test.php

内容示例:

<?php
file_put_contents('/tmp/php_cron.log', date('Y-m-d H:i:s')." run\n", FILE_APPEND);

保存退出。

测试脚本是否能手动运行:

php /var/www/scripts/test.php
cat /tmp/php_cron.log

三、使用 crontab 添加定时任务

1️⃣ 编辑当前用户的定时任务

crontab -e

如果是第一次用,会让你选择编辑器,推荐 nano


2️⃣ 添加 PHP 定时任务

格式:

* * * * * 命令

示例:

每分钟执行一次

* * * * * /usr/bin/php /var/www/scripts/test.php

⚠️ 建议写 php 的绝对路径,可用 which php 查看

which php

3️⃣ 常见时间示例

需求 写法
每分钟 * * * * *
每 5 分钟 */5 * * * *
每小时 0 * * * *
每天 0 点 0 0 * * *
每天 2 点 0 2 * * *
每周一 3 点 0 3 * * 1

示例(每天凌晨 2 点):

0 2 * * * /usr/bin/php /var/www/scripts/test.php

四、查看 / 管理定时任务

crontab -l      # 查看当前任务
crontab -r      # 删除所有任务(慎用)

五、用 root 用户跑(可选)

如果你需要系统级权限:

sudo crontab -e

六、常见问题

1️⃣ cron 里路径不对

✅ 用绝对路径(php、脚本、日志)

2️⃣ 没权限写文件

✅ 给目录权限或换 /tmp

3️⃣ 想看执行错误

* * * * * /usr/bin/php /var/www/scripts/test.php >> /tmp/cron.log 2>&1

七、Laravel / ThinkPHP 等框架

如果是框架,一般用:

* * * * * /usr/bin/php /var/www/project/artisan schedule:run

如果你愿意,可以告诉我:

  • 用的是 原生 PHP / Laravel / ThinkPHP
  • 多久执行一次
  • 是否要 root 权限

我可以直接帮你写完整 crontab 配置。

0