我正在尝试在笔记本上编写一些代码并使用xampp环境。我有以下代码:
class A {
...
foreach ($blocks as $block) {
$block = 'dir/dir2/' . $block;
}
if (file_exists($block) == true) {
$var .= file_get_contents($block);
}
}
当我在foreach循环中回显$ block变量时,它会返回文件的路径。但是,file_exists函数始终返回false。你能帮我解决一下这里有什么问题吗?
答案 0 :(得分:8)
file_exists
的目的是检查提供的文件是否存在。这是假的。这意味着你的文件不存在于php所在的位置。 php可能正在寻找与您预期不同的区域。看起来是时候进行一些调试了。
运行此命令以确定php的位置。
echo "current working directory is -> ". getcwd();
这是你想要php看的地方吗?如果没有,那么更改php正在使用chdir
函数查找的目录。
$searchdirectory = "c:\path\to\your\directory"; //use unix style paths if necessary
chdir($searchdirectory);
然后运行你的函数(注意:我将斜杠翻转为反斜杠,以便与windows样式路径保持一致。)
class A {
...
//change working directory
$searchdirectory = "c:\path\to\your\directory"; //use unix style paths if necessary
chdir($searchdirectory);
foreach ($blocks as $block) {
$block = 'dir\dir2\' . $block;
if (file_exists($block) == true) {
$var .= file_get_contents($block);
}
}
}
答案 1 :(得分:1)
引用某人评论php file_exists
手册页
请注意:如果您传递相对路径 到file_exists,它将返回false 除非路径碰巧是相对的 到“当前的PHP目录”(见chdir() )。
换句话说,如果您的路径是相对于当前文件目录的,则应将dirname(__FILE__)
附加到相对路径,或者从PHP 5.3开始,您可以使用__DIR__
。
答案 2 :(得分:1)
可能为时已晚,但在最后2小时敲打我的头后才发现它的解决方案。如果您使用的是Windows,它默认会隐藏文件扩展名。因此a.txt
将显示为a
,显示为a.txt
的文件实际上为a.txt.txt
。要查看文件扩展名,请转到
控制面板 - >表现和个性化 - >文件夹选项 - >图强>
并取消选中隐藏文件扩展名。现在,您可以看到file_exists()中使用的真实名称。
答案 3 :(得分:1)
你正在混合斜线,这个让我疯狂。
以下是解决方案:
echo getcwd();
$searchimg = getcwd().'\\public\\images\\pics\\'.$value['name'].'.'.$value['ext'];
你需要引用这样的斜杠:)
答案 4 :(得分:0)
据我所知,您在file_exists
循环之外使用foreach
。因此,$block
变量当时没有约束。
编辑:实际上它仍然绑定到集合中的最后一个值。
答案 5 :(得分:0)
您是否打算在foreach循环中检查file_exists()
?
class A {
...
foreach ($blocks as $block) {
$block = 'dir/dir2/' . $block;
// Inside the loop
if (file_exists($block) == true) {
$var .= file_get_contents($block);
}
}
}
答案 6 :(得分:0)
我想file_exists的检查与使用file_get_contents打开有点不同。所以我可能会遇到这些问题之一:
也许它可以帮助你进一步!祝你好运
答案 7 :(得分:-1)
如果您为文件使用变量,请确保末尾没有空格。我发疯了直到我找到了解决办法:用trim()删除空白。见下文。
if file_exists(trim($Filename))