doushenxu7294 2016-01-28 06:25
浏览 131
已采纳

如果由Cron运行,PHP`exec()`不起作用

I have a PHP script that is being called every minute by crontab like this:

* * * * * /usr/bin/php /var/www/html/cronjobs/watchdog/watchdogExec.php

The script executes a number of other PHP scripts and passes a variable like so:

$ccmd = "nohup sudo /usr/bin/php watchdog.php " . $var . " &";
exec($ccmd);

When called from a browser, watchdogExec.php runs fine and does its job. However when I added the cronjob, the script is not working and is spamming mails with the following error:

No entry for terminal type "unknown";
using dumb terminal settings.

This error appears the same number of times exec() is called, so I figured that must be the issue. I searched and read about cronjob not running commands in a terminal, and I tried setting the environment in the crontask, but it did not help. Apparently PHP is printing that error, but I haven't found anything in their documentation about it.

* * * * *  /usr/bin/env TERM=xterm /usr/bin/php /var/www/html/cronjobs/watchdog/watchdogExec.php

I am running CentOS 7.

Edit:

Searched some more and found out about PHP environment variables. Someone fixed a similar problem by adding the following in their PHP script. However this is not fixing my problem, it only stops the mail spam. The script is still not working.

putenv('SHELL=/bin/bash');
putenv('TERM=xterm');
  • 写回答

2条回答 默认 最新

  • dongzhou4727 2016-01-28 07:17
    关注

    Have you tried using full paths in your exec statement too? Also try adding the TERM environment variable:

    $ccmd = "nohup /usr/bin/sudo /usr/bin/env TERM=xterm /usr/bin/php watchdog.php " . $var . " &";
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题