PHP中file_exists对存在文件返回false的问题求助
问题分析与解决方案
嘿,我一眼就揪出问题所在啦!你遇到的麻烦根源出在fgets()函数的特性上——它会把文件行尾的换行符(或空白字符)一起读取进来。
看你给出的输出:
string(8) "myfile2 " string(22) "/Users/aashok/myfile2 "
myfile2本身只有6个字符,但输出里的字符串长度是8,多出来的就是行尾的空白字符(大概率是换行符,显示成了空格)。这就导致你拼接后的文件路径末尾多了无效空白,和实际存在的文件名myfile2不匹配,所以file_exists()自然返回不存在。
解决办法
只需要在读取行内容后,用trim()函数去掉字符串首尾的空白字符(包括换行符、空格、制表符等)就行:
修改代码里读取文件行的部分:
$f = fopen($file1, 'r'); $file2 = trim(fgets($f)); // 加上trim()处理多余空白 fclose($f);
如果你担心误删文件名开头的合法空格(虽然你这里不存在这种情况),也可以用rtrim()只去掉右侧的空白字符。
修改后,$file2就会变成纯净的myfile2,拼接后的路径/Users/aashok/myfile2和实际文件名完全匹配,file_exists()就能正确检测到文件存在啦。
内容的提问来源于stack exchange,提问作者Abhinav
相关产品推荐
相关产品推荐

