【问题标题】:Run sh file from php with cron使用 cron 从 php 运行 sh 文件
【发布时间】:2016-11-29 08:30:08
【问题描述】:

我有一个带有文件删除命令的 sh 文件。

我是这样从 php 运行它的:

shell_exec("sudo -n ./truncatefiles.sh  2>&1");

如果我从浏览器打开 PHP 文件,那可以正常工作,但不能从计划的 cron 选项卡中工作。

PHP 用户:www-data

如果我从 cron 运行 whoiami,返回相同:www-data

我将此添加到我的 visudo 中:

www-data ALL=(ALL) NOPASSWD: /www/sites/..../importscript/truncatefiles.sh

此 sh 文件的 Shell exec 返回(来自 cron):

sudo:抱歉,运行 sudo 需要密码

为什么在 cron 中以不同的方式工作?

我应该怎么做才能让它工作?

【问题讨论】:

  • 这是一个 apache 网络服务器,对吧?
  • 是的,它的 2.2.16 (Debian)

标签: php cron debian visudo


【解决方案1】:

请尝试执行以下操作, 尝试将您的输出从 crotab 记录到文件中, * * myscript.php >> /var/log/myjob.log 2>&1 这样你就可以调试你的脚本。 1.还要检查你的shell脚本,php文件的用户和权限。 2. 试试 sudo crotab -e

【讨论】:

  • 我知道回复:sudo:对不起,运行sudo需要密码
  • PHP 文件 777,sh 文件 777
  • shell exec 这种方式:./truncatefiles.sh 2>&1 询问密码,以 sudo -n 开头返回密码是必需的。没有更多的回应:(
  • 我会避免使用具有 777 权限的互联网访问 PHP 脚本,这是一个安全问题。
  • 您是否尝试过将您的 shell 脚本直接添加到您的 crontab 中并以这种方式运行?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-21
  • 2017-11-06
  • 1970-01-01
  • 2015-03-20
  • 2012-06-19
  • 2016-04-22
  • 2016-08-08
相关资源
最近更新 更多