我在目录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 =
答案 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()。