2013-07-04 91 views
0

我想對ajax調用一個php文件;最終這個php文件將寫入一個mongodb數據庫。現在,我正在調試並希望打開php文件並寫入文本文件。當我從命令行運行它時,php文件起作用。同樣,ajax調用返回'成功'消息。但是,ajax調用而不是導致寫入新的文本文件。用ajax調用觸發php腳本

從我的javascript文件的相關部分:

$.ajax({ 
    type: "POST", 
    url: "jq.php", 
    data: { 
     'myString': "blahblah", 
    }, 
    success: function(data) { 
     alert('worked'); 
    }, 
    error: function(){ 
     alert('failed'); 
    } 
}); 

PHP文件:

<?php 
$file=fopen("welcome.txt","w"); 
$str = "let's hope this works."; 
fwrite($file, $str); 
fclose($file); 
?> 

我也曾嘗試包裹上面的內容:如果($ _ POST [ 'AJAX'] ){...}。

+2

錯誤日誌說...? –

+1

刪除ajax,自行運行php文件,出現錯誤報告 – 2013-07-04 03:47:09

+0

當我自己運行php文件時沒有錯誤;它會打開並寫入文本文件。 – user2548848

回答

1

對於調試,不要從命令行運行腳本,只需直接用瀏覽器打開它。當你使用命令行時,你是以你(或許是「root」)用戶的身份執行腳本的,但是如果它是從你的瀏覽器調用的,它將由apache(或者你正在使用的任何web服務器)執行它是自己的用戶。

最有可能的是,您自己的用戶帳戶具有寫入權限,但apache用戶不會 - 所以命令行工作,但來自瀏覽器的調用不會。

順便說一句:這是勉強一個很好的測試案例來替換蒙戈-DB(或任何其他數據庫)的相互作用,在那裏你將不必擔心文件系統權限問題,但可以改爲運行成數百個其他問題。

0

你應該總是使用:

$file=fopen("welcome.txt","w"); 
if ($file) { // because fopen can return FALSE on error 
    $str = "let's hope this works."; 
    fwrite($file, $str); 
    fclose($file); 
} 
else { 
    // something wrong! 
} 

ref

編輯還檢查E_WARNING - 它可以告訴你這個問題,你可以通過error_reporting(E_ALL);激活它,如果它是由您的服務器禁用或看對於PHP日誌文件中的錯誤