我正在尝试使用存在于子目录中的文件并遇到目录结构的某些问题或者其他问题。从主目录
调用时,此代码工作较早包含该命令的文件位于子目录中,该子目录是域主目录下的一个目录。
当我在一个我知道存在的文件上调用以下内容时,不会返回任何内容,也不会返回FALSE和TRUE
$imgpath1 = 'pics/'.$userid.'_pic.jpg';
$exists = file_exists($imgpath1);
echo "1".$exists;//returns 1
我尝试了目录的不同变体,例如' / pics ...'还有' ../ pics ...'以及' http://www开始的整个网址....'但不能让它返回FALSE或TRUE。
感谢任何建议。
答案 0 :(得分: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
。
答案 1 :(得分:0)
您无法将Boolean
回显为True
或False
,它们将分别回显为1
或0
。
虽然,您可以使用ternary conditional operator,例如:
$exists = file_exists($imgpath1);
echo $exists ? 'true' : 'false';
答案 2 :(得分:0)
试试这个:
var_dump(realpath(__DIR__.'/../pics'));
如果你弄错了,那么路径就不存在了,否则你就把路径作为一个字符串。
答案 3 :(得分:0)
您可以使用以下代码。这有点冗长。
//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";
}