无法使用file_get_contents - PHP读取目录中的文件

时间:2014-07-09 07:40:38

标签: php

我在目录content中有一个文件,其中包含要读取的文件。在我的MAMP安装中,content/出现在webroot文件夹(/Applications/MAMP/htdocs/testApp/content)中。我无法从文件夹中读取文件(test.txt)。我正在使用的功能是:

function getDataFromLibrary($tgt_url) {

        //header('Content-Type: text/html; charset=UTF-8');
        echo "inside get data from lib.";
        if(file_exists($tgt_url)) {
            echo "File does exist.";
            if(is_readable($tgt_url)) {
                echo "file is readable.";
            } else {
                echo "file is not readable.";
            }
        } else {
            echo "File does not exist.";
        }
        echo "tgt url = ".$tgt_url."the end.";
        $file_contents = file_get_contents(urlencode($tgt_url));
        if($file_contents === false) {
            echo "could not read file contents.";
        } else {
            echo "file contents read.";
        }
        echo "Target url=".var_dump($tgt_url)."again the end.";
        echo "File contents = ".$file_contents;
        //$file_contents_replaced = str_replace($file_contents, "\"", "\\\"");
        //echo $file_contents_replaced;
        //var_dump($file_contents);
        //return $tgt_url;
    }

以及我$tgt_url = content/test.txt时得到的输出:

inside get data from lib.File does exist.file is readable.tgt url = content/test.txtthe end.could not read file contents.string(33) "content/test.txt" Target url=again the end.File contents =  

该文件确实存在且可读。我哪里错了?

非常欢迎任何帮助。

编辑:
我在php.ini中打开了以下错误: display_errors = On 在脚本中,我包括以下行:

error_reporting(E_ALL);
    ini_set('display_errors',1);
    ini_set('display_startup_errors',1);
    error_reporting(-1);  

输出结果为:

inside get data from lib.File does exist.file is readable.tgt url = content/test.txtthe end.
Warning: file_get_contents(content%2Ftest.txt): failed to open stream: No such file or directory in /Applications/MAMP/htdocs/testApp/index.php on line 323
could not read file contents.string(33) "content/test.txt" Target url=again the end.File contents =

3 个答案:

答案 0 :(得分:1)

在调用urlencode()之后,$ tgt_url将再次变为“content%2Ftest.txt”,而不是“content / test.txt”。 你可以在getDataFromLibrary()的前面调用urlencode(),它会显示:File不存在。

答案 1 :(得分:1)

当您在开始时检查所有$tgt_url时,您不应该在所有检查后更改您选中的内容。现在你检查了文件是否存在等$tgt_url,最后你想得到文件urlencode($tgt_url)什么不一样。

答案 2 :(得分:1)

不要在file_get_contents()函数中使用urlencode()。