0

PHPファイルへのajax呼び出しを行いたいです。最終的に、この php ファイルは mongodb データベースに書き込みます。今のところ、デバッグ中で、php ファイルを開いてテキスト ファイルに書き込みたいと考えています。コマンドラインから実行すると、phpファイルが機能します。同様に、ajax 呼び出しは「成功」メッセージを返します。ただし、ajax 呼び出しによって、新しいテキスト ファイルが書き込まれることはありません。

私の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);
?>

また、上記のコンテンツを if ($_POST['ajax']) {...} でラップしようとしました。

4

2 に答える 2

1

デバッグの場合は、コマンド ラインからスクリプトを実行するのではなく、ブラウザで直接スクリプトを開きます。コマンドラインを使用している場合、スクリプトは自分のユーザー (おそらく「root」) として実行されますが、ブラウザーから呼び出された場合は、apache (または使用している Web サーバー) によって実行されます。それは自分のユーザーです。

おそらく、自分のユーザー アカウントには書き込み権限がありますが、apache-user には権限がないため、コマンド ラインは機能しますが、ブラウザーからの呼び出しは機能しません。

ところで、これは mongo-db (または他のデータベース) のやり取りに取って代わる良いテスト ケースではありません。この場合、ファイル システムのアクセス許可の問題を心配する必要はありませんが、代わりに他の何百もの問題が発生する可能性があります。

于 2013-07-04T05:04:23.283 に答える
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!
}

参照

EDIT はE_WARNINGもチェックします - 問題を表示できます。error_reporting(E_ALL);でアクティブ化できます。サーバーによって無効にされている場合、またはphpログファイル内のエラーを探す場合

于 2013-07-04T05:18:45.343 に答える