我在我的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();