【发布时间】:2018-12-15 05:21:04
【问题描述】:
我想检查我的服务器上是否存在jpeg 文件。但是,当我检查它时,返回值为 false。
clearstatcache();
// the $img variable is dynamically got from $split[1] which is something like image.jpeg" />
$img = str_replace('"','',$split[1]); // remove double quotes
$img = str_replace('/>','',$img); // remove img end tag
$img = str_replace(' ','',$img); // remove spaces
$filename = "uploads/image.jpeg"; // original file name
$fn = "uploads/".$img; // file name with dynamic variable in it
if(file_exists($fn)){
echo "yes";
}else{
echo "no";
}
// Check if the two strings are the same and they are
if($fn == $filename){
echo "same";
}
原始静态文件名返回yes,而动态文件名返回no。我检查了safe_mode 在我的服务器上是off,两个变量($fn 和$filename)完全一样。如果我只是简单地使$img 等于image.jpeg 而没有任何str_replace 它也会返回true 并回显yes。
总的来说,我不知道$img 变量有什么问题,如果变量相同,为什么它会给我两个不同的结果?
【问题讨论】:
-
var_dump($filename, $fn)请... -
另外,
/uploads/...指的是目录uploads在您的硬盘根目录中。那是对的吗?不知何故,我怀疑它是。 -
var_dump还给我string(97) "permUploads/_jrP_Nq_X3hHsXdQ0_vHG1Yr5Z_touryx_xZsxsYCiAzWNNj9hc8HIck_UN9BISgxszzNvmV_uOq.jpeg " string(93) "permUploads/_jrP_Nq_X3hHsXdQ0_vHG1Yr5Z_touryx_xZsxsYCiAzWNNj9hc8HIck_UN9BISgxszzNvmV_uOq.jpeg"。两个相同但长度不同的字符串。怎么样? -
@MarkFrankli 93 != 97 你的问题
-
这毫无意义,
if($fn == $filename){应该失败了。我假设你在这里混淆了一些输出
标签: php filenames file-exists