【问题标题】:shell_exec('crontab -l') is empty when script was executed from cron job从 cron 作业执行脚本时,shell_exec('crontab -l') 为空
【发布时间】:2016-01-06 23:11:44
【问题描述】:

我正在尝试使用我的 PHP 脚本删除特定的 cron 作业。 首先,我正在尝试使用 shell_exec 获取当前的 cron 作业:

shell_exec('crontab -l');

当此脚本从 webbrowser shell_exec 执行时返回所有当前的 cron 作业。但是当这个脚本从 cron 作业 shell_exec 执行时返回空字符串。为什么?

在另一个虚拟主机上这工作正常,但在这里我遇到了这个问题。我试图找到原因或解决方案,尝试了不同的方法,但没有找到任何可行的解决方案。

【问题讨论】:

  • 每个用户都有自己的 cronjobs。
  • 要详细说明 Dagon 所说的内容,您可以使用 crontab -u www-data -l 例如查看 www-data 用户的 cron 列表。可能在一台服务器上工作,因为您的 cron 以与您的 Web 服务器相同的用户身份运行。
  • 龙,杰里米哈里斯,感谢您的帮助。我找到了原因。 cron 在有限的环境下运行。就我而言,我只需要使用完整路径:shell_exec('/bin/crontab -l') instaed of shell_exec('crontab -l')

标签: php cron crontab


【解决方案1】:

你必须把命令的整个路径,在这种情况下,crontab 的路径。 因为当 crontab 执行它们的工作时,没有环境变量 $PATH 来查找二进制文件

【讨论】:

    猜你喜欢
    • 2014-04-24
    • 1970-01-01
    • 1970-01-01
    • 2016-01-28
    • 1970-01-01
    • 1970-01-01
    • 2021-01-12
    • 2011-11-07
    • 2014-04-16
    相关资源
    最近更新 更多