Harshit Dwivedi Harshit Dwivedi - 6 months ago 18
Ajax Question

Executing a php script located on server via ajax

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

Answer

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.