2013-07-04 98 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日志文件中的错误