2016-06-09 135 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這包括在列表中。

相關問題