PHP file_exists 目录

Posted

技术标签:

【中文标题】PHP file_exists 目录【英文标题】:PHP file_exists directory 【发布时间】:2016-01-23 12:04:21 【问题描述】:

我正在尝试使用存在于子目录中的文件,但遇到了目录结构或其他问题。当从主目录调用时,此代码在较早时工作

包含该命令的文件位于域主目录下一个目录的子目录中。

当我在我知道存在的文件上调用以下内容时,不会返回任何内容,既不是 FALSE 也不是 TRUE

$imgpath1 = 'pics/'.$userid.'_pic.jpg';
$exists = file_exists($imgpath1);
echo "1".$exists;//returns 1

我尝试了目录的不同变体,例如“/pics...”和“../pics...”以及以“http://www....”开头的整个 url,但不能让它返回 FALSE 或 TRUE。

希望有任何建议。

【问题讨论】:

尝试在 'pics/' 之前添加 realpath($_SERVER["DOCUMENT_ROOT"]) 你无法回应你的想法。而是使用var_dump($exists); echo false 什么也没有打印出来。 echo true 会打印出 1,所以你必须得到布尔值 false,这意味着该目录不存在。您需要确切知道它相对于该脚本的工作目录的位置,或者提供它的绝对路径。 好的。 vardump 打印出 false 以便问题得到解决。但是,该目录仍未被正确识别,因为该目录中确实存在文件。 【参考方案1】:

true 强制转换为字符串时,您会得到1

false 强制转换为字符串时,会得到一个空字符串。

这是一个例子:

<?php
echo "True: \"" . true . "\"\n";
echo "False: \"" . false . "\"\n";

echo "True length: " . strlen("" . true) . "\n";
echo "False length: " . strlen("" . false) . "\n"
?>

以及运行它的输出:

True: "1"
False: ""
True length: 1
False length: 0

所以实际上,file_exists($imgpath1) 正在返回 false

【讨论】:

【参考方案2】:

您不能将Boolean 回显为TrueFalse,它将分别回显为10。 虽然,您可以使用ternary conditional operator,例如:

$exists = file_exists($imgpath1);
echo $exists ? 'true' : 'false';

【讨论】:

【参考方案3】:

试试这个:

var_dump(realpath(__DIR__.'/../pics'));

如果你得到 false 路径不存在,否则你得到路径作为字符串。

【讨论】:

【参考方案4】:

您可以使用以下代码。有点啰嗦。

//get the absolute path /var/www/... 
$currentWorkingDirectory = getcwd(); 

//get the path to the image file
$imgpath1 = $currentWorkingDirectory . '/pics/' . $userid . '_pic.jpg';

//in case the pics folder is one level higher
//$imgpath1 = $currentWorkingDirectory . '/../pics/' . $userid . '_pic.jpg';

//test existence 
if (file_exists($imgpath1)) 
    echo "The file $imgpath1 exists";
 else 
    echo "The file $imgpath1 does not exist";

【讨论】:

以上是关于PHP file_exists 目录的主要内容,如果未能解决你的问题,请参考以下文章

PHP file_exists 对现有文件返回 false

file_exists() 的 PHP 不区分大小写版本

PHP Phar - file_exists() 问题

PHP file_exist 无法正常工作? [关闭]

file_exists() 在 while 循环内的 php5 中不起作用

无法在 php 中检查 file_exist 的外部 url [重复]