【发布时间】:2013-05-29 15:22:43
【问题描述】:
我有一个 PHP 脚本,它只是通过电子邮件向我发送测试消息。如果我进入我的网络服务器 cPanel,我可以创建一个每 10 分钟运行一次脚本的 cronjob,它运行良好。
我使用以下设置在 cPanel 中手动安排 cron 作业:
10 * * * * php -q /home1/user1/public_html/mail.php
上面再次运行良好,但是当我尝试通过 PHP 而不是 cPanel 创建 cron 作业时,它永远不会运行。当我检查 cPanel 以查看该作业是否实际上是由我的 php 脚本创建的时,它确实出现了。 cPanel 中显示的所有设置都是正确的,它只是不运行脚本。
这是我用来创建 cron 作业的 PHP 代码:
$output = shell_exec('crontab -l');
file_put_contents('/tmp/crontab.txt', $output.'10 * * * * php -q /home1/user1/public_html/mail.php'.PHP_EOL);
echo exec('crontab /tmp/crontab.txt');
我想这可能是权限问题或类似问题?不太确定为什么在我创建它时工作有效,但在 PHP 创建它时却没有。
【问题讨论】:
-
我会说运行 PHP 的用户不允许您的服务器管理员创建 cron 任务。在共享环境中,这将是一个巨大的安全漏洞。
-
可能是这样,但 PHP 创建的 cron 作业确实显示在 cPanel 中:/
-
我想我下次评论之前应该更仔细地阅读这个问题。
-
我不会尝试用 php 修改 crontab。每 10 分钟调用一次 cron.php 怎么样,在 cron.php 中你可以做你自己的 crons,由自制的文本文件或基于数据库的 cron-manager 定义
-
我对您所描述的内容不太熟悉。你有例子吗?