【问题标题】:php crontab -l showing different result from command linephp crontab -l 从命令行显示不同的结果
【发布时间】:2014-07-08 21:23:16
【问题描述】:

我在亚马逊 ec2 上的 /var/www/html 文件夹中创建了一个文件名“testCrontab.php”,基于 ubuntu,

$output = shell_exec('crontab -l');
var_dump($output);

问题是当我在浏览器中调用此文件时,它会显示

string(207) "0 0,6,12,18 * * * /usr/bin/php /var/www/html/testExec.php 0 3 * * * /usr/bin/php /var/www /html/testCrawlback.php 0 4 * * * /usr/bin/php /var/www/html/testInsertCard.php * * * * * NEW_CRON * * * * * NEW_CRON "

我猜那些 NEW_CRON 来自我测试从 php 插入新 cron 的其他时间, 但是当我通过发出/usr/bin/php /var/www/html/testCrontab.php 从命令行调用此文件时,它显示

string(169) "0 0,6,12,18 * * * /usr/bin/php /var/www/html/testExec.php 0 3 * * * /usr/bin/php /var/www/html/testCrawlback.php 0 4 * * * /usr/bin/php /var/www/html/testInsertCard.php"

另外,命令crontab -l 会导致后面的输出。

请帮助告诉我这里发生了什么。

【问题讨论】:

    标签: php ubuntu amazon-ec2 crontab


    【解决方案1】:

    结果会有所不同,因为当您通过浏览器执行脚本时,用户将是www-data 或nobody。它将显示该用户的 crons。如果您从命令行执行脚本,它将显示该特定用户的 crons。

    编辑

    为网络用户设置 cron

    sudo crontab -u webuser -e
    

    列出网络用户的crons

    sudo crontab -u webuser -l
    

    网络用户将是 nobody 或 www-data 或 apache

    您可以通过在网络浏览器中执行以下代码来找到它。

     <?php $output = exec('whoami'); 
        echo $output;
     ?>
    

    【讨论】:

    • 谢谢!!!因此,如果我使用“ec2-user”登录 EC2,当我从浏览器执行该用户时,如何指定该用户?
    • 首先您必须找出哪个是您的 websuer 。将此代码保存在文件中并通过浏览器执行。 &lt;?php $output = exec('whoami'); echo $output;
    • 非常感谢 Harikrishnan,你真的拯救了我的一天。
    • 结果是'apache'。所以我猜有某种php方法可以改变这个?
    猜你喜欢
    • 1970-01-01
    • 2011-09-21
    • 1970-01-01
    • 2017-08-05
    • 2019-11-26
    • 1970-01-01
    • 2019-10-26
    • 1970-01-01
    • 2014-08-08
    相关资源
    最近更新 更多