Amazon web services Elastic Beanstalk和Cron任务不确定它是否与Yii一起工作

Amazon web services Elastic Beanstalk和Cron任务不确定它是否与Yii一起工作,amazon-web-services,yii,ssh,cron,amazon-elastic-beanstalk,Amazon Web Services,Yii,Ssh,Cron,Amazon Elastic Beanstalk,在Elastic Beanstalk上设置一个简单的cron任务时,我遇到了一个问题。我发现这里的一些其他问题很有用,但我似乎仍然无法让cron执行。我不确定这是否是AWS问题,或者脚本本身是否没有执行。脚本在YII中设置为控制台命令。我没有发现任何PHP错误,并且加载ec2实例时没有错误。以下是我迄今为止所做的工作: 我已经在应用程序的根目录上创建了一个名为.ebextensions的文件夹 在该文件夹中,我创建了一个包含以下内容的配置文件 # Installing dos2unix in c

在Elastic Beanstalk上设置一个简单的cron任务时,我遇到了一个问题。我发现这里的一些其他问题很有用,但我似乎仍然无法让cron执行。我不确定这是否是AWS问题,或者脚本本身是否没有执行。脚本在YII中设置为控制台命令。我没有发现任何PHP错误,并且加载ec2实例时没有错误。以下是我迄今为止所做的工作:

我已经在应用程序的根目录上创建了一个名为.ebextensions的文件夹

在该文件夹中,我创建了一个包含以下内容的配置文件

# Installing dos2unix in case files are edited on windows PC
 packages:
     yum:
        dos2unix: []
 container_commands:
     01-command:
        command:         dos2unix -k cron_setup.sh

     02-command:
        command:         chmod 700 cron_setup.sh

     03-command:
         command:        "cat .ebextensions/cron_task.txt > /etc/cron.d/cron_task && chmod 644 /etc/cron.d/cron_task"
         # leader_only prevents problems when EB auto-scales
         leader_only:    true
    # The newline at the end of this file is extremely important.  Cron won't run without it.
* * * * *  /bin/php /var/www/html/crons.php test  > /dev/null
文件cron_task.txt存在于.ebextensions文件夹中,其中包含

# Installing dos2unix in case files are edited on windows PC
 packages:
     yum:
        dos2unix: []
 container_commands:
     01-command:
        command:         dos2unix -k cron_setup.sh

     02-command:
        command:         chmod 700 cron_setup.sh

     03-command:
         command:        "cat .ebextensions/cron_task.txt > /etc/cron.d/cron_task && chmod 644 /etc/cron.d/cron_task"
         # leader_only prevents problems when EB auto-scales
         leader_only:    true
    # The newline at the end of this file is extremely important.  Cron won't run without it.
* * * * *  /bin/php /var/www/html/crons.php test  > /dev/null
Crons.php是包含Yii框架的应用程序根目录下的一个文件

defined('YII_DEBUG') or define('YII_DEBUG',true);

// including Yii
require_once(dirname(__FILE__).$yii.'/yii.php');

// we'll use a separate config file
$configFile=dirname(__FILE__).'/protected/config/cron.php';

// creating and running console application
Yii::createConsoleApplication($configFile)->run();
config/cron.php文件是框架的设置文件,包括数据库连接和模型包含等

cron_task.txt文件中引用的cron脚本是一个控制台命令,如下所示

class TestCommand extends CConsoleCommand {
    public function run($args) {
        $message = new Crontasks();
        $message->timestamp = date("Y-m-d H:i:s");
        $message->message = "test";
        $message->insert();
    }
}
在这里,我只是试图将一条记录放入数据库,以证明cron已成功执行。而且我似乎无法添加记录

问题是,我不知道这在哪里失败了。我没有收到任何实例错误。我拍了一张快照日志,里面似乎也找不到任何相关的错误。php错误应该记录在这里吗?还是我必须自己设置它来记录错误?问题是,我也无法通过SSH进入ec2。我收到一个权限被拒绝(公钥)错误!!即使我已经设置了安全组/密钥对,并为实例使用了正确的公共DNS


如果有人能看出我在这里做错了什么,请告诉我!否则,您是否可以就在何处查找可能阻止此cron任务执行的任何错误提供任何建议?非常感谢

尝试创建一个包装器shell,它将更改为所需的目录,然后调用crons.php。我最初的命令是
bash cron_setup.sh
,在sh中,我有
echo“***cd/bin/php/var/www/html/crons.php test”>/tmp/mycron
,但这也不起作用。这就是你所指的吗?cd/var/www/html/;请从命令行尝试您的命令。如果它不能从命令行工作,那么它就不能从cron脚本工作。是的,显然,从命令行测试是我尝试的第一件事,但正如我在最初的帖子中提到的,我无法通过SSH连接到服务器,我得到了“权限被拒绝(公钥)”,尽管付出了大量努力,但我似乎也无法解决这个问题,但这完全是另一个问题。