I have a website hosted on server, now what I want is to run a .php script (Also located on the same server) when someone presses the submit button in the website.
Following is the ajax code
$.ajax({url: "/test.php",
success: function(response){
console.log("Success",response);
}
});
My test.php consists of
<?php
//exec('sudo -u www-data python /var/www/html/test.py');
echo "PHP Script Ran";
mkdir("/var/www/html/test", 0700);
?>
When I navigate to ip_address/test.php, the echo message is displayed correctly but the mkdir command doesn't seem to be executed as there is no folder created in my server's directory.
Also I want to know, how can I run this test.php script when someone presses the submit button in my website.
The Javascript code is
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);
}
});
});
});
Any help on this would be much appreciated. Thanks
2 Answers 2
In this case it's recommended to use mkdir within try...catch function and capture the error if it's the case.
On the other hand mkidr will return a boolean value: true if the directory creation was successful or false in the case of a failure.
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...';
}
If mkdir cannot create the folder two things you need to check: if the folder exist and if it has the right permissions. By this i mean if the user group is set to apache (because apache, through web browser is executing the mkdir command) and second if apache (www-data) has the necessary permissions to execute this command.
3 Comments
alert(response); executes the script on my server? I am a bit new to this so this part wan't clear to me.Revise your php.ini in the server, the tag disable_functions = "..." and making sure that mkdir not this included in the list.
event.preventDefault();is missing to stop the form submission.form.addEventListener("submit", function(event) {event.preventDefault(); .....but how do I execute the php script now? After getting it from ajaxtest.phphasn't the permission to add that folder. There is also the possibility that the path/var/www/htmldoesn't exist on the remote server. These are my ideas...