我有一个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创建它时却没有。
答案 0 :(得分:0)
PHP shell脚本,例如cli / cron作业,STILL需要<?php
标记。 e.g。
#!/usr/bin/php
<?php
$output = blah blah blah
请记住,没有“PHP脚本”这样的东西。只有文件中包含PHP代码块。如果文件中没有打开<?php
标记块SOMEWHERE,那么PHP执行引擎将永远不会启动,即使该文件已由PHP处理/解析。
如果没有<?php
,文件的内容将被简单地视为纯文本输出。
答案 1 :(得分:0)
结束搞清楚......我确定我上面使用的php代码有什么问题,但似乎是某种程度上导致执行失败。
我现在正在使用下面的代码和作业计划并实际运行:)
exec('echo -e "`crontab -l`\n10 * * * * php -q /home1/user1/public_html/mail.php" | crontab -');