php - cron 运行使用 shell_exec 和 redis-cli 的 php 文件

标签 php bash cron redis

我有一个运行以下命令的 cronjob:

* * * * * php/path/to/phpfile.php >>/cronlog.txt

当我在 bash 中运行 php 文件时一切正常,但是当 cronjob 运行它时,一个命令失败:

shell_exec("redis-cli ping"); 并返回一个错误 sh: 1: redis-cli: not found

有谁知道为什么使用 PHP shell_exec 的 cron 用户无法使用 redis-cli 命令?

更新 git diff/env_term.txt/env_cron.txt

-SHELL=/bin/bash
-TERM=screen
-SSH_CLIENT=*************
-SSH_TTY=/dev/pts/0
-USER=root
-LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.
-TERMCAP= { a bunch of giberish }
-PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
-MAIL=/var/mail/root
-STY=*************
-PWD=*************
-LANG=en_US.UTF-8
-HOME=/root
-SHLVL=2
 LANGUAGE=en_US:en
+HOME=/root
 LOGNAME=root
-WINDOW=2
-SSH_CONNECTION=*************
-LESSOPEN=| /usr/bin/lesspipe %s
-LESSCLOSE=/usr/bin/lesspipe %s %s
-_=/usr/bin/env
+PATH=/usr/bin:/bin
+LANG=en_US.UTF-8
+SHELL=/bin/sh
+PWD=*************

最佳答案

当调用 cron 时,您是否检查过您的 PATH 变量是否相同。 快速检查是添加一个虚拟 cron 作业以输出传递给 cron 的当前环境变量:

* * * * * env > /tmp/env.out

然后将此输出与从终端运行 env 命令时的输出进行比较

关于php - cron 运行使用 shell_exec 和 redis-cli 的 php 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21956077/

相关文章:

linux - 有人能解释一下这个 "Shellshock"代码在 shell 中是如何工作的吗

php - 检查 php 文件命令是否已经在 cron 上运行

linux - Linux 中使用 crontab 调度作业

javascript - 将 JavaScript 弹出窗口转换为警报框

linux - 循环遍历具有相同键的关联数组

bash - 使用 if 语句精确匹配 ?部分匹配也需要完全匹配

php - 如何在 ubuntu 中调用 cronjob 文件

php - 如何使用 Selenium webdriver 获取浏览器 sessionId

php - 在mysql中的指定列中获取具有相同随机单词的记录

php - mysql 在 48 小时后每 10 分钟选择一次记录总和