PHP文件_存在不起作用。这似乎颠倒了真假

PHP文件_存在不起作用。这似乎颠倒了真假,php,image,file-exists,Php,Image,File Exists,当我在我的照片库工作时,我决定,如果应该显示的图像不存在,最好有一个备用文件。我已经浏览了这个网站,可能还有其他网站。他们都说要使用: $VariableName = "photography/small/2014-09-21-red-1.png"; if (file_exists ($VariableName)) {echo "Yes!!!";} else {echo "Nooo!!!";} 或 出于某种原因,这对我不起作用。它确实可以工作,但仅当文件\u存在时设置为!文件_exists,意

当我在我的照片库工作时,我决定,如果应该显示的图像不存在,最好有一个备用文件。我已经浏览了这个网站,可能还有其他网站。他们都说要使用:

$VariableName = "photography/small/2014-09-21-red-1.png";
if (file_exists ($VariableName)) {echo "Yes!!!";}
else {echo "Nooo!!!";}

出于某种原因,这对我不起作用。它确实可以工作,但仅当
文件\u存在时
设置为
!文件_exists
,意思是:“如果此文件不存在,请显示存在的图像(我想要的图像,而不是它的替换图像)”。换言之: 这意味着如果苹果公司存在,显示“橙色”;如果
apple
不存在,则显示
apple

我甚至在搜索栏中放置了生成的图像链接(使用
!file_exists
),按enter键后,它会将我带到图像。我已确保图像设置为
0777
,以防干扰,但似乎没有效果。所有
$DataRows
变量都连接到一个数据库,我已经三次检查了
photography/small
中的文件名是否与数据库表中的文件名匹配

为什么会这样

$URLPath = "http://localhost/~matthew/";
if (file_exists ($URLPath . "photography/small/" . $DataRows["DatePublished"] . "-" . $DataRows["FileName"] . "." . $DataRows["ImageExtension"])) {
 echo '<img src="' . $URLPath . "photography/small/" . $DataRows["DatePublished"] . "-" . $DataRows["FileName"] . "." . $DataRows["ImageExtension"] . '" alt="' . $DataRows["PhotoName"] . '">' . "\n";
}
else {
 echo '<img src="' . $URLPath . 'img/no-image.png" alt="Image Not Here">' . "\n";
}
$URLPath=”http://localhost/~matthew/“;
如果(文件_存在($URLPath.“photography/small/”$DataRows[“DatePublished”]。“-”$DataRows[“FileName”]。“$DataRows[“ImageExtension”])){
回显“”。“\n”;
}
否则{
回显“”。“\n”;
}

非常感谢您的帮助。

尝试使用clearstatcache()并仔细检查文件名和路径。

看起来您正在检查文件,但将URL传递到函数中。它可能返回false,因为URL不是服务器上的有效路径。我建议您使用文件的实际路径,或者如果您必须使用URL,请查看本文:

如果您将$URLPath从

$URLPath = "http://localhost/~matthew/";

如果(文件_存在($VariableName或“图像路径”)){

这是胡言乱语。只要“图像路径”不为空,操作数的计算结果将为(bool)true

应该是:

if (file_exists ($VariableName)) {
看起来你应该使用

If(is_readable($variable)) {
但是,看看您以后的代码,您并没有使用最初引用的构造


file\u exists()
在许多不同的上下文中都能像我所描述的那样工作。

mathew是htdocs文件夹中的一个文件夹吗?有什么具体的原因吗,为什么要通过绕道HTTPing进入自己的服务器来检查文件的存在?也就是说,为什么
http://localhost/~matthew
和not,例如,
/var/www/my docroot
?RTM“从PHP 5.0.0开始,此函数还可以与一些URL包装一起使用。请参阅支持的协议和包装,以确定哪些包装支持stat()系列功能。"@Robert我相信
~matthew
是一个
htdocs
文件夹。我使用Mac作为服务器,它的设置与Windows和Linux不同。@Boldewyn我使用Mac作为服务器,它不像Windows那样有
www
文件夹。我会的,但我对每个条目都使用数据库循环。正如我在帖子中所说的,我已经三次检查了d文件夹和数据库表中的文件名。都是正确的。它返回
Library/WebServer/Documents/~matthew/
,这不会导致任何异常。我从不使用URL进行查询来跳过ping。使用is_file()而不是file_exists()会得到相同的结果吗?你确定你的数据库没有问题吗?我肯定数据库没有问题。我还有一个导航菜单和迷你导航菜单,它们使用数据库,并且显示时没有任何问题。
is_file()
也返回false。我假设~matthew是一个别名,而不是一个物理文件夹。如果是,请检查服务器的配置以获得正确的fs路径。祝你好运。
$VariableName或“path to image”
放在一起,显示如果(file_存在($VariableName)或
如果(file_存在(“path to image”)
。我将在上面修复它。@symcbean如果(文件存在($VariableName或“图像路径”)),我将对他们对
的使用发表评论
但后来意识到这正是OP刚才所说的。代码示例应该用更好的措词。我在阅读了几遍之后,在问题发布后就明白了他们的意思。在问题下发布了评论,但没有得到回答。因此,现在这是任何人的游戏。我怀疑这是错误的这就是他们使用路径的方式。他们的
$VariableName=“path to imagepng”
示例非常模糊,IMHO。我已经确定所有链接都是正确的。
clearstatcache
不起作用。请问您使用的是哪种PHP版本?
if (file_exists ($VariableName)) {
If(is_readable($variable)) {