简体   繁体   中英

Executing bash script from php

I am trying to execute a bash script from within a php script.

The php script is:

    <?php

    $clientName = $_POST['clientName'];
    $startDate = $_POST['startDate'];
    $endDate = $_POST['endDate'];
    $mode = $_POST['mode'];

    echo("Current working directory = " . getcwd());
    echo("Client Name = " . $clientName . "<br/>\n");
    echo("Start date = " . $startDate . "<br/>\n");
    echo("End date = " . $endDate . "<br/>\n");
    echo("Mode = " . $mode . "<br/>\n");

    $cmd = "/webroot/argRepeater.bash escapeshellarg($clientName) escapeshellarg($startDate) escapeshellarg($endDate) escapeshellarg($mode)";

echo("Command = " . $cmd . "<br/>\n");
var_dump($cmd);

    exec("/bin/bash ./argRepeater.bash escapeshellarg($clientName) escapeshellarg($startDate) escapeshellarg($endDate) escapeshellarg($mode)", $output, $output2);

    echo("Output array = " . print_r($output) . "<br/>\n");
    echo("Output = " . $output2 . "<br/>\n");

    ?>

The above php script takes arguments from an html form. The bash script argRepeater.bash only repeats whatever arguments were given to it. The output is as follows:

 Current working directory = /home/content/31/10199331/htmlClient Name = yum
    Start date = 2013-05-14
    End date = 2013-05-24
    Mode = fir
   Command = ./argRepeater.bash escapeshellarg(yum) escapeshellarg(2013-05-14) escapeshellarg(2013-05-24) escapeshellarg(fir)
string(128) "./argRepeater.bash escapeshellarg(yum) escapeshellarg(2013-05-14) escapeshellarg(2013-05-24) escapeshellarg(fir)" Array ( ) Output array = 1
    Output = 1  

My questions:
1. What more needs to be done to ensure argRepeater gets executed?
2. How do I display argRepeater's outputs on the webpage?

1. What more needs to be done to ensure argRepeater gets executed?

Well it needs all that it needs. Troubleshoot your needs if you are not so sure if it worked out or not. Output = 1 signals it did work in the sense that something was executed.

2. How do I display argRepeater's outputs on the webpage?

You already do it:

echo("Output array = " . print_r($output) . "<br/>\n");

so as well, you ask about something that already is solved by your own code.

So probably the problem is just that you are uncertain if you understand your code or not? If so, just double check every statement you write with the manual.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM