PHP file_exists 不起作用。好像真假颠倒

PHP file_exists does not work. It seems to be reversing true and false

在处理我的照片库时,我决定如果应该显示的图像没有显示,最好有一个备用文件。我看过这个网站,可能还有其他网站。他们都说要用:

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

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

出于某种原因,这对我不起作用。它确实有效,但仅当 file_exists 设置为 !file_exists 时,即:"if this file does not exist, display the image that exists (the image I want, not it's replacement)"。换一种说法: 这是说如果 apple 存在,显示 "orange";如果 apple 不存在,则显示 apple.

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

中的文件名匹配

为什么会这样?

$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";
}

非常感谢您的帮助。

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

您似乎正在检查文件,但将 URL 传递给函数。它可能返回 false,因为 URL 不是您服务器上的有效路径。我建议使用文件的实际路径,或者如果您必须使用 URL,请查看此 post:How to check if a file exists from a url

如果您将 $URLPath 从

更改为
$URLPath = "http://localhost/~matthew/";

$URLPath = $_SERVER['DOCUMENT_ROOT'] . "/~matthew/";

if (file_exists ($VariableName or "path-to-image")) {

这是胡言乱语。只要 "path-to-image" 不为空,操作数就会评估为 (bool) true。

应该是:

if (file_exists ($VariableName)) {

看起来你应该使用

If(is_readable($variable)) {

但是看看你后来的代码,你没有使用你最初引用的结构。

file_exists() 在许多不同的环境中都按照我所描述的那样工作。