通过AJAX执行位于服务器上的PHP脚本
我有一个网站托管在服务器上,现在我想要的是当有人按下网站上的提交按钮时运行.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);
}
});
});
});
任何帮助,在此,将不胜感激。 谢谢
在这种情况下,建议在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
)具有执行此命令所需的权限。
好吧,所以我做了这个,我得到的回应是“无法创建文件夹..”,所以可能有些许可问题,我会看看那 只是还有一件事,命令'alert(response);'在我的服务器上执行脚本? 我对这个有点新,所以这部分不会清楚。 –
这不是一个JavaScript动作,它与服务器端无关。请检查我编辑的答案。 –
谢谢,它的工作原理:) 只好使用本指南设置正确的权限[http://fideloper.com/user-group-permissions-chmod-apache](http://fideloper.com/user-group-权限-CHMOD-阿帕奇) –
修改您的的php.ini在服务器中,标签disable_functions选项 =“...”,并确保不的mkdir这包括在列表中。
'event.preventDefault();'缺少停止表单提交。 – Jai
@Jai所以我在'form.addEventListener(“submit”,function(event){event.preventDefault(); .....'后添加了这个,但是我现在怎么执行php脚本呢? 从ajax –
这似乎是一个权限问题:可能脚本'test.php'没有权限添加该文件夹,也有可能是'/ var/www/html'路径在远程服务器上不存在。这些是我的想法... – gior91