2016-06-09 157 views
1

我有一个网站托管在服务器上,现在我想要的是当有人按下网站上的提交按钮时运行.php脚本(也位于同一台服务器上)。
通过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命令似乎没有执行,因为在我的服务器目录中没有创建文件夹。

另外我想知道,当有人按下我网站上的提交按钮时,我该如何运行这个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); 
     } 
    }); 
    }); 
}); 

任何帮助,在此,将不胜感激。 谢谢

+1

'event.preventDefault();'缺少停止表单提交。 – Jai

+0

@Jai所以我在'form.addEventListener(“submit”,function(event){event.preventDefault(); .....'后添加了这个,但是我现在怎么执行php脚本呢? 从ajax –

+1

这似乎是一个权限问题:可能脚本'test.php'没有权限添加该文件夹,也有可能是'/ var/www/html'路径在远程服务器上不存在。这些是我的想法... – gior91

回答

2

在这种情况下,建议在try...catch函数中使用mkdir并捕获错误(如果是这种情况)。

另一方面,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)具有执行此命令所需的权限。

+0

好吧,所以我做了这个,我得到的回应是“无法创建文件夹..”,所以可能有些许可问题,我会看看那 只是还有一件事,命令'alert(response);'在我的服务器上执行脚本? 我对这个有点新,所以这部分不会清楚。 –

+1

这不是一个JavaScript动作,它与服务器端无关。请检查我编辑的答案。 –

+0

谢谢,它的工作原理:) 只好使用本指南设置正确的权限[http://fideloper.com/user-group-permissions-chmod-apache](http://fideloper.com/user-group-权限-CHMOD-阿帕奇) –

1

修改您的的php.ini在服务器中,标签disable_functions选项 =“...”,并确保不的mkdir这包括在列表中。

相关问题