title: PHP `exec()` doesn't work if run by Cron
body: <p>I have a PHP script that is being called every minute by crontab like this:</p>
  
  <pre><code>* * * * * /usr/bin/php /var/www/html/cronjobs/watchdog/watchdogExec.php
  </code></pre>
  
  <p>The script executes a number of other PHP scripts and passes a variable like so:</p>
  
  <pre><code>$ccmd = "nohup sudo /usr/bin/php watchdog.php " . $var . " &amp;";
  exec($ccmd);
  </code></pre>
  
  <p>When called from a browser, <strong>watchdogExec.php</strong> 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:</p>
  
  <pre><code>No entry for terminal type "unknown";
  using dumb terminal settings.
  </code></pre>
  
  <p>This error appears the same number of times <code>exec()</code> 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.</p>
  
  <pre><code>* * * * *  /usr/bin/env TERM=xterm /usr/bin/php /var/www/html/cronjobs/watchdog/watchdogExec.php
  </code></pre>
  
  <p>I am running CentOS 7.</p>
  
  <p>Edit:</p>
  
  <p>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.</p>
  
  <pre><code>putenv('SHELL=/bin/bash');
  putenv('TERM=xterm');
  </code></pre>