簡體   English   中英

php無法調用shell腳本(js-> php-> sh)

[英]php is failing to call shell script (js -> php -> sh)

我想從網頁執行Shell腳本。 因此,我從一個簡單的算術和程序開始。 網頁有兩個字段和一個提交按鈕。 如果用戶單擊提交按鈕,則javascipt會進行驗證,然后通過ajax調用php文件。 PHP文件提取參數,並使用這些參數調用sum.sh
但是我做不到。 這是我的代碼。

design3.html

 <body>
 <form action='' method='post'>
        <center>
           arg1: <input type='text' name='t1' id="arg1"/> <br><br>
           arg2: <input type='text' name='t2' id="arg2"/> <br><br>
           <input type='submit' name='use_button' value='Sum' onclick="addContent()"/>
        </center>
    </form>

 <script type="text/javascript">
    function addContent(){
        var a = document.getElementById('arg1').value;
        var b = document.getElementById('arg2').value;

        if(a == "" || b == "") {
            alert("Please fill all fields");
            return;
        }

        var request = $.ajax({
                   url: "add.php",
                   type: "POST",
                   dataType: "html",
                   data: {functionname: 'add', arguments:[a, b]}
         });

         request.done(function(msg) {
                   alert(msg);
          });

          request.fail(function(jqXHR, textStatus) {
                   alert( "Request failed: " + textStatus );
          });

    }

</script>
</body>

add.php

<?php
if (is_ajax()) {
    if( isset($_POST['functionname']) ) {
        switch($_POST['functionname']) {
            case 'add':
                $var1 = $_POST['arguments'][0];
                $var2 = $_POST['arguments'][1];
                $cmd = 'sh ./sum.sh'.' '.$var1.' '.$var2;
                $output = shell_exec($cmd);
                echo $output;
                break;
         }
     }
}

function is_ajax() {
    return isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest';
}
?>

sum.sh

#!/bin/bash
var1=$1
var2=$2
echo `expr $var1 + $var2`

我是這個JS和PHP的新手。 但是努力做到這一點。 如果我要單獨測試,那就可以了。 當我在沒有JS的同一個文件中編寫html和php時,我的腳本正在工作。 如果我沒有在php中調用sum.sh腳本文件,則它正在工作。 全面集成失敗了。 我從瀏覽器警報中收到此錯誤Request failed: error

您發布到服務器

functionname: 'add'

它與您的服務器端測試不匹配

switch($_POST['functionname']) {
    case 'connect':

我認為問題出在javascript或php中。 但是問題出在我的html代碼中。 我的一位朋友解決了這個問題。
他告訴我點擊了提交按鈕。 因此,他將按鈕的類型更改為submitbutton 現在一切正常。

更改此代碼:

<input type='submit' name='use_button' value='Sum' onclick="addContent()"/>

至:

<input type='button' name='use_button' value='Sum' onclick="addContent()"/>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM