Shell_exec on Ubuntu 16 and nginx

February 14, 2018 4.3k views
Nginx Linux Commands Ubuntu 16.04

Hi there.

I am running Ubuntu 16.04 with nginx and php7-fpm.

I am try to run a shell_exec command from a PHP file. However, the command just isn’t executing. No errors are being written to the nginx error log, quite simply, just nothing happens.

I assume that I need to enable shell_exec somewhere but I am not sure where.

If someone could point me in the right direction, I’d really appreciate it.

Thanks so much,

5 Answers

Add 2>&1 to the command and var_dump the output.

Sorry @Woet I don’t quite understand…

The line of code in question is as follows:

shell_exec(‘php mailTemplates/execMailBM.php ’ . escapeshellarg(serialize($mailParams)) . ’ > /dev/null 2>/dev/null &’);


  • Why are you sending the output to /dev/null if you’re trying to debug it?

  • I think you needed this:

    shell_exec('php mailTemplates/execMailBM.php ' . escapeshellarg(serialize($mailParams)) . ' 2>&1 > /dev/null 2>&1 &');

    I had a similar issue with shell_exec("curl") returned NULL. Finally this solved my issue:

    $cmd = "curl '$ID&data=$data' 2>&1 > /dev/null 2>&1 &";
    $cron = exec($cmd);

@Woet I don’t actually know what that is doing to be honest, it’s a line of code I am reusing. What should I modify that to? Thank you.

Hi @Woet I’ve just tried an absolute path to the file, the command is below:

shell_exec(‘php /var/www/x/mailTemplates/execMailBM.php ’ . escapeshellarg(serialize($mailParams)) . ’ > /dev/null 2>/dev/null &’);

It didn’t make a difference, same result.

Hi @Woet PHP has been setup to run globally, I can execute it from the command line without issue, so I don’t believe it’s the PHP path.

Can you help me modify that line of code to write to a external error log perhaps? Thank you!

Have another answer? Share your knowledge.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!