当文件存在时,php无法打开流

时间:2017-10-26 06:37:05

标签: javascript php ajax

$fileToAccess="userFiles/".$json[0]->userfor2.".json";
document.addEventListener('click', function(e)
{
   xhttp=new XMLHttpRequest();
   xhttp.onreadystatechange = function() 
   {
     if (this.readyState == 4 && this.status == 200) 
        {
            window.alert(this.responseText);
        }
   }
   xhttp.open("GET", "evaluate.php?q=[{\"id\": \""+e.target.id+"\"},{\"file\": \"<?php echo $fileToAccess;?>\"}]", true);
   xhttp.send();
   //alert(e.target.id)
});

和我的getData.php:

<?php
    $file=$_REQUEST['q'];
    $myfile=file_get_contents($file);
    $json=json_decode($myfile);
    echo $json[1];
?>

我尝试过的事情

在userFiles前加上./。

在/ userFiles之前添加_DIR__

但是我仍然得到错误无法打开流,即使我看到警报消息中的网址显示完全正常,我的文件也存在

权限:整个目录中的chmod -R 777

编辑:提醒讯息: This is the case using __DIR__ 在getData.php中添加var_dump($file)之后编辑2:enter image description here 编辑3:删除所有空格后&#34;从$ file,我收到以下警告:enter image description here

2 个答案:

答案 0 :(得分:0)

在PHP中,尝试使用'realpath()'函数来实际显示PHP代码查找文件的位置。

另外,使用'var_dump()'来确保你的GET / POST变量名称是正确的,因为我很困惑,看到你在URL中传递了转义双引号。

答案 1 :(得分:0)

我是你,我会做那样的事情:

  

在$ fileToAccess上我只会存储文件名而不是所有路径

$fileToAccess=$json[0]->userfor2.".json";
document.addEventListener('click', function(e)
{
   xhttp=new XMLHttpRequest();
   xhttp.onreadystatechange = function() 
   {
     if (this.readyState == 4 && this.status == 200) 
        {
            window.alert(this.responseText);
        }
   }
   xhttp.open("GET", "evaluate.php?q=[{\"id\": \""+e.target.id+"\"},{\"file\": \"<?php echo $fileToAccess;?>\"}]", true);
   xhttp.send();
   //alert(e.target.id)
});
  

并在getData.php中设置文件的路径

<?php
  $file=$_REQUEST['q'];
  $myfile=file_get_contents(__DIR__.DS.userFiles.DS.$file);
  $json=json_decode($myfile);
?>