Javascript 为什么文件内容在我的在线php脚本中不起作用?

Javascript 为什么文件内容在我的在线php脚本中不起作用?,javascript,php,file-put-contents,Javascript,Php,File Put Contents,我正在尝试使用.php文件在http web服务器上编辑.txt文件。我可以调用.php文件并让它运行(并返回一些随机的内容),但当我使用file\u put\u内容时,它不起作用。我曾尝试将文件权限设置为7770775等,但什么也没发生。(尽管从我收集的信息来看,权限似乎仅适用于本地系统)。我知道这里已经有一些类似的问题,但我无法理解其中任何一个的答案 testingPHP.js(已修剪): 函数submitData(){ var数据=提示(“输入数据”); sendToServer(数据't

我正在尝试使用.php文件在http web服务器上编辑.txt文件。我可以调用.php文件并让它运行(并返回一些随机的内容),但当我使用file\u put\u内容时,它不起作用。我曾尝试将文件权限设置为7770775等,但什么也没发生。(尽管从我收集的信息来看,权限似乎仅适用于本地系统)。我知道这里已经有一些类似的问题,但我无法理解其中任何一个的答案

testingPHP.js(已修剪):

函数submitData(){
var数据=提示(“输入数据”);
sendToServer(数据'test.txt');
}
函数sendToServer(data,file){//file是要写入的文件,而不是php文件
var xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=函数(){
if(this.readyState==4&&this.status==200){
}
}
open(“GET”,“editTXT.php?txtFile=file&data=data”);
xmlhttp.send();
设置超时(更新,500);
}
函数更新(){
var xhttp=newXMLHttpRequest();
xhttp.onreadystatechange=函数(){
if(this.readyState==4&&this.status==200){
var response=xhttp.responseText;
控制台日志(响应);
}
};
open(“GET”,“readTxt.php?file=test.txt”,true);
xhttp.send();
}
设置间隔(更新,1000);
editTxt.php:


readTxt.php:


我希望下面的内容可能会有所帮助-我觉得主要的问题是javascript中的问题很有趣,但我还是会在这里发布我对所有文件所做的更改。顺便说一句,使用Ajax这样的持续轮询可以使用EventSource连接和服务器发送的事件以更干净的方式完成

如果在调用脚本时要完全覆盖文本文件,那么这可以正常工作(无论如何,在测试中),但是如果要将数据添加到现有内容中,则需要添加
FILE\u APPEND
作为
FILE\u put\u contents

editTxt.php

<?php
    if( $_SERVER['REQUEST_METHOD']=='GET' && isset( $_GET['txtFile'], $_GET['data'] ) ){

        $file=__DIR__ . '/' . $_GET['txtFile'];
        $data=$_GET['data'];

        $bytes=file_put_contents( $file, $data );
        if( !$bytes )exit('error');

    }
?>
<?php
    if( $_SERVER['REQUEST_METHOD']=='GET' && isset( $_GET['file'] ) ){
        $file=__DIR__ . '/' . $_GET['file'];
        exit( file_get_contents( $file ) );
    }
?>

readTxt.php

<?php
    if( $_SERVER['REQUEST_METHOD']=='GET' && isset( $_GET['txtFile'], $_GET['data'] ) ){

        $file=__DIR__ . '/' . $_GET['txtFile'];
        $data=$_GET['data'];

        $bytes=file_put_contents( $file, $data );
        if( !$bytes )exit('error');

    }
?>
<?php
    if( $_SERVER['REQUEST_METHOD']=='GET' && isset( $_GET['file'] ) ){
        $file=__DIR__ . '/' . $_GET['file'];
        exit( file_get_contents( $file ) );
    }
?>

还有HTML和Javascript

<!DOCTYPE html>
<html lang='en'>
    <head>
        <meta charset='utf-8' />
        <title></title>
    </head>
    <body>
        <script>
            function submitData() {
                var data = prompt('Enter data');

                if( data ){/* only submit if there is data */
                    sendToServer(data, 'test.txt');
                    setInterval(update, 1000);
                    return true;
                }
            }

            function sendToServer(data, file) {//file is file to write into, not the php file
                var xmlhttp = new XMLHttpRequest();
                xmlhttp.onreadystatechange = function() {
                    if (this.readyState == 4 && this.status == 200) {
                    }
                }
                /* the filename and the data need to be escaped in the string */
                xmlhttp.open("GET", "editTXT.php?txtFile="+file+"&data="+data);
                xmlhttp.send();
                setTimeout(update, 500);
            }

            function update() {
                var xhttp = new XMLHttpRequest();
                xhttp.onreadystatechange = function() {
                if (this.readyState == 4 && this.status == 200) {
                    var response = xhttp.responseText;
                    console.log(response);
                }
                };
                xhttp.open("GET", "readTxt.php?file=test.txt", true);
                xhttp.send();
            }


            /* call the function that prompts for data input */
            submitData();       
        </script>
    </body>
</html>

函数submitData(){
var数据=提示(“输入数据”);
如果(数据){/*只有在有数据时才提交*/
sendToServer(数据'test.txt');
设置间隔(更新,1000);
返回true;
}
}
函数sendToServer(data,file){//file是要写入的文件,而不是php文件
var xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=函数(){
if(this.readyState==4&&this.status==200){
}
}
/*文件名和数据需要在字符串中转义*/
xmlhttp.open(“GET”、“editTXT.php?txtFile=“+file+”&data=“+data”);
xmlhttp.send();
设置超时(更新,500);
}
函数更新(){
var xhttp=newXMLHttpRequest();
xhttp.onreadystatechange=函数(){
if(this.readyState==4&&this.status==200){
var response=xhttp.responseText;
控制台日志(响应);
}
};
open(“GET”,“readTxt.php?file=test.txt”,true);
xhttp.send();
}
/*调用提示输入数据的函数*/
submitData();

在您的服务器上,CLI命令
getenforce
的输出是什么?在
editTxt.php
中,您能确认(
file\u exists
等)文件确实存在吗?!我现在已经做了一些修复,文件_存在()说trueand有助于解决问题,或者仍然无法写入文本文件?另外:我不知道如何输入CLI命令,也无法在web上找到任何相关页面。我将尝试您的解决方案我已将您的更改复制到所有文件中,但仍然无法工作。您是否查看了apache错误日志?我假设它是apache,但它可能不是…我会在有时间的时候尝试一下好的-上面的测试对我来说很好,尽管我已经修改了它。