I want to run a shell script within a php webpage to check some processes running on my system (Ubuntu 12.04). Googleing I've found about shell_exec() but I can't manage to run the script when loading php.

This is the php code I use.

$output = shell_exec('./dirlist.bash');
echo "<pre>$output</pre>";

and the piece of html I get


Also tried $output = shell_exec('sudo -u www-data ./dirlist.bash');

dirlist.bash does ls -l (just for testing script and shell_exec)

I think it is not a permission problem. Running directory grants write and execute privileges for all users (I should be careful here).

drwxrwxrwx  4 meteo meteo 4096 mar 11 15:20 RAMS

User www-data has been added to sudoers file in case it was needed

www-data ALL = (meteo) NOPASSWD: /home/meteo/www/RAMS/dirlist.bash

Thanks in advance

  • 2
    Programming questions are off topic here unless they are directly related to administering your system. I suggest you ask on Stack Overflow, but your problem is almost certainly that you are using relative paths (./dirlist_bash). And for the love of all that's fluffy, remove www-data from sudoers!
    – terdon
    Mar 11, 2014 at 15:06
  • You are right, I will move to Stack Overflow. And as you ask so kindly I will remove www-data :-)
    – pacomet
    Mar 11, 2014 at 16:52
  • Hi, now using absolute path it is running fine, thank you very much.
    – pacomet
    Mar 12, 2014 at 8:15
  • can you post a link to your question on SO here in the comments for others who follow? thanks!
    – Steve
    Aug 10, 2014 at 8:20
  • There it is link
    – pacomet
    Aug 11, 2014 at 9:28

1 Answer 1


You probably need to chdir to the correct directory before calling the script. This way you can ensure what directory your script is "in" before calling the shell command.

$old_path = getcwd();
$output = shell_exec('./script.sh var1 var2');
echo "<pre>$output</pre>";

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .