在 Ubuntu 上给 PHP 设置定时任务,通常是通过 crontab 来实现的。下面从基础到常见用法给你讲一遍。
先确认 PHP 命令行可用:
php -v
如果提示没有 php,可以安装:
sudo apt update
sudo apt install php-cli
例如:
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 -e
如果是第一次用,会让你选择编辑器,推荐 nano。
格式:
* * * * * 命令
示例:
* * * * * /usr/bin/php /var/www/scripts/test.php
⚠️ 建议写 php 的绝对路径,可用
which php查看
which php
| 需求 | 写法 |
|---|---|
| 每分钟 | * * * * * |
| 每 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 # 删除所有任务(慎用)
如果你需要系统级权限:
sudo crontab -e
✅ 用绝对路径(php、脚本、日志)
✅ 给目录权限或换 /tmp
* * * * * /usr/bin/php /var/www/scripts/test.php >> /tmp/cron.log 2>&1
如果是框架,一般用:
* * * * * /usr/bin/php /var/www/project/artisan schedule:run
如果你愿意,可以告诉我:
我可以直接帮你写完整 crontab 配置。