通过ajax执行位于服务器上的php脚本

时间:2016-06-09 07:56:56

标签: javascript php jquery python ajax

我在服务器上托管了一个网站,现在我想要的是当有人按下网站上的提交按钮时运行.php脚本(也位于同一台服务器上)。

以下是ajax代码

$.ajax({url: "/test.php",
  success: function(response){
      console.log("Success",response);
    }
  });

我的test.php由

组成
<?php
//exec('sudo -u www-data python /var/www/html/test.py');
echo "PHP Script Ran";
mkdir("/var/www/html/test", 0700);
?>

当我导航到ip_address / test.php时,echo消息显示正确但mkdir命令似乎没有执行,因为我的服务器中没有创建文件夹&# 39; s目录。

另外我想知道,当有人按下我网站上的提交按钮时,如何运行此test.php脚本。

Javascript代码

var $ = jQuery;
var timestamp = Number(new Date());
var form = document.querySelector("form");
var database = firebase.database();
form.addEventListener("submit", function(event) {
  var ary = $(form).serializeArray();
  var obj = {};
  for (var a = 0; a < ary.length; a++) obj[ary[a].name] = ary[a].value;
    console.log("JSON",obj);
  firebase.database().ref('users/' + timestamp).set(obj);
  database.ref('users/' + timestamp).once('value').then(function(snapshot) {
    console.log("Received value",snapshot.val());
    $.ajax({
      url: "/test.php",
      success: function(response){
        console.log("Success",response);
      }
    });
  });
});

对此的任何帮助将不胜感激。 感谢

2 个答案:

答案 0 :(得分:2)

在这种情况下,建议在mkdir函数中使用try...catch,如果是这样的话,请捕获错误。

另一方面,mkidr将返回一个布尔值:true如果目录创建成功,或false,如果失败。

<强> 1.version

try {
    mkdir("/var/www/html/test", 0700, true);
} catch ($ex Exception) {
    echo $ex->getMessage();
}

<强> 2.version

if (!mkdir("/var/www/html/test", 0700, true)) {
    echo 'Failed to create folder...';
}

如果mkdir无法创建文件夹,则需要检查两件事:文件夹是否存在以及是否具有正确的权限。我的意思是,如果用户组设置为apache(因为apache,通过Web浏览器正在执行mkdir命令),其次是apache(www-data)具有执行此命令所需的权限。

答案 1 :(得分:1)

修改服务器中的 php.ini ,标记 disable_functions =“...”并确保列表中不包含mkdir。