我正在尝试通过我的网站cpanel创建一个cron作业。我已经谈过支持服务,他们给了我这个命令来运行我的网站上执行一个php文件。
/usr/local/bin/php -q /home/mymcstatus/domains/mymcstatus.net/public_html/redesign/scripts/update.php
这似乎不起作用,我还使用* / 1将分钟间隔设置为每分钟。
我在update.php文件中使用下面的代码:
<?php
ini_set('display_errors', 1);
ini_set('log_errors', 1);
ini_set('error_log', dirname(__FILE__) . '/error_log.txt');
error_reporting(E_ALL);
require('minequery.class.php');
include('../config/config.php');
$date = date("D-M-Y");
$file = fopen("UPDATE_LOG($date).txt", 'w');
$query = mysql_query("SELECT * FROM servers") or die(mysql_error());
if($query) {
while($row = mysql_fetch_array($query)) {
$ip = $row['ip'];
$port = $row['port'];
$name = $row['name'];
$string = "[UPDATE LOG]: $date - Updated Server $name \n";
fwrite($file, $string);
print("[UPDATE LOG] Updated Server $name </br>");
}
mail("duncan@mymcstatus.net","UPDATED","Server has updated","From: Mymcstatus");
} else {
print("Cant query");
}
?>
当我通过代码有效的Web浏览器手动访问update.php时,Cronjob似乎没有发生任何事情。我错过了什么或做错了什么?
答案 0 :(得分:0)
这里有一些事情可以发生。第一个是检查update.php的文件权限并确保它是可执行的。 cron可能作为不具有执行update.php权限的其他用户执行。您可以尝试的第二件事是将此作为update.php的第一行,之前没有空格。
#!/usr/local/bin/php
答案 1 :(得分:0)
通常cron作业不会从PHP所在的同一目录运行,因此它可能正在运行,但输出文件正在其他地方创建。尝试将输出文件路径更改为文件的完整路径,即:
$file = fopen("/home/mymcstatus/domains/mymcstatus.net/public_html/redesign/scripts/UPDATE_LOG($date).txt", 'w');
答案 2 :(得分:0)
在上述评论的帮助下,我设法修复了文件路径,但它也归结为命令。我把错误的用户路径放在这里是有效的命令。
/usr/local/bin/php -q /home/mymcstat/domains/mymcstatus.net/public_html/redesign/scripts/update.php
感谢您的帮助
答案 3 :(得分:0)
cd
对于你的脚本的路径总是一个好主意。这样,您不需要更改include
和require
文件的名称以及参与文件操作的任何其他文件名。你的cronjob命令可能如下所示:
cd /home/mymcstatus/domains/mymcstatus.net/public_html/redesign/scripts/; / usr / local / bin / php -q /home/mymcstatus/domains/mymcstatus.net/public_html/redesign/scripts/update.php
您不需要以这种方式提供任何绝对文件路径。