[英]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代码中。 我的一位朋友解决了这个问题。
他告诉我点击了提交按钮。 因此,他将按钮的类型更改为submit
到button
。 现在一切正常。
更改此代码:
<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.