4

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

<pre></pre>

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 '14 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 '14 at 16:52
  • Hi, now using absolute path it is running fine, thank you very much. – pacomet Mar 12 '14 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 '14 at 8:20
  • There it is link – pacomet Aug 11 '14 at 9:28
9

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();
chdir('/my/path/');
$output = shell_exec('./script.sh var1 var2');
chdir($old_path);
echo "<pre>$output</pre>";
| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.