I'm a Java Developer who is trying to learn HTML in painful baby steps. I'd like my nacent website to run a simple bash shell script (or better yet, a PHP script) when the user clicks a button or hyperlink. It is surprisingly hard to find a simple example of this!
I found this example on StackOverflow. The post's second answer lays out a step-by-step example, where the HTML code calls a PHP script; the PHP script calls a bash shell script. I've tried to replicate the example on my own web server. (FYI, I'm developing on an Ubuntu machine running Apache2.)
Here's my index.html
:
<!DOCTYPE html>
<html>
<head></head>
<body>
<form action="/testexec.php">
<input type="submit" value="Run My Script">
</form>
</body>
</html>
Keeping it simple, this creates a button to call testexec.php
, which is in the Apache home directory (/var/www/html/
) There's not much to that script, either:
<?php
shell_exec("/var/www/html/myBashScript.sh");
header('Location: http://10.10.10.10/myBashScript.sh?success=true');
?>
I'm not sure about those file pathnames. Strictly speaking, myBashScript.sh
is in directory /var/www/html/
(although I suppose I could move it later). When I troubleshoot, I can't tell if the pathnames are screwing up anything. Also, I really hate that I have to refer to the server by its IP Address (here, 10.10.10.10
.) There's gotta be a way to just say localhost
, right?
Here's myBashScript.sh:
#!/bin/bash
echo "HELLO WORLD"
...and that should do it. So I thought. Both scripts are set properly with chmod
and chown
and chgrp
, and I can manually run them without errors from the command line.
But when I surf to my webpage and click "Run My Script", I see this in my web browser:
#!/bin/bash
echo "HELLO WORLD"
In other words, the text of the script is printed to the screen. But I want the script to run and the output of the script to appear on screen. Gah! FWIW, I see no errors entered into the Apache2 error log (/var/log/apache2/error.log
), either.
Soooooo... anyone spot my error? Thank you in advance.