在Prestashop上运行cron作业

时间:2017-04-28 11:01:46

标签: php cron prestashop cpanel prestashop-1.6

我在我的cpanel帐户上设置了一个cron作业任务,每五分钟运行一次,指向curl "http://domain/admin/index.php?controller=AdminCronJobs&token=b883b19bfc82743cb3b94165d31806d4",我在cron运行后收到电子邮件提醒,这一个正在运行。我的Prestashop Cron任务管理器(模块cronjobs)指向http://domain/admin/index.php?controller=AdminModules&token=988bbbea561a66f8cbd4bc8ae256587a&configure=productimporter&tab_module=others&module_name=productimporter&runners=0并且每小时运行一次。

我在我应该运行的模块代码中配置了一些error_logs,并且没有任何内容打印到error_logs文件中。

如果我在浏览器中运行http://domain/admin/index.php?controller=AdminModules&token=988bbbea561a66f8cbd4bc8ae256587a&configure=productimporter&tab_module=others&module_name=productimporter&runners=0,则登录管理员,而不是在cron任务中运行代码执行完美,并将error_logs打印到error_logs文件。所以,如果我没有错,问题是当cron开始运行URL时,Prestashop要求进行身份验证,因此我的代码不会被执行。

如何逃避身份验证呢?

谢谢!

更新: 自从我解决这篇文章以来已经有一段时间了,所以我有点忘记了我是如何最终得到这个解决方案的。

我在cpanel帐户中设置了一个cron作业: /usr/bin/php public_html/modules/module/update-me-up.php k=somethingYouWant > /dev/null 2>&1

这个cron将调用我的update-me-up文件,这个文件将调用我想要的类。

    <?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
ini_set("log_errors", 1);
ini_set("error_log", $logPath);



error_log('new'); 
error_log(dirname(__FILE__));
include(dirname(__FILE__).'/../../config/config.inc.php');
//include(dirname(__FILE__).'/../../init.php');
$key = 'somethingYouWant ';


if(!Tools::getValue('k') || Tools::getValue('k') != $key){
    error_log('unauthorized');

    die('unauthorized');
}
error_log(dirname(__FILE__).'/classIWant.php');
include(dirname(__FILE__).'/classIWant.php');
error_log('Cron task starting');

$a = new classIWant();
$a->run();

0 个答案:

没有答案