PHP file_exists和取消链接不起作用(“没有这样的文件或目录”)


PHP file_exists and unlink doesn't work ("No such file or directory")

$path = "F:/www/__DADOS__/__SESSAO/__9987f2bfdfb80bce8fd72402887bb2c50a433ae0__E6nDSMnD7TCY5#47$BNCx0e#47$r#47$ByZJvcyMIazXSYWBWBXN5lgdZOd3Ps#47$ROrVSPl7QVQaCqfa2WezCauk#47$LVFyhgw==.meudominio.com.sessid"
file_put_contents($path, $texto);
unlink($path);

在上面的代码中,我得到了unlink($ path);的警告No such file or directory并且文件没有被删除,我之前也尝试过使用file_exists检查文件,返回为: false

即使内容正确,file_put_contents也会正确创建文件(已选中(。我可以通过file_get_contents访问该文件,但及时删除或验证是否存在得到失败。有人知道吗?

$path的总大小为 241

这个问题似乎更微妙。文件名由base64_encode形成,文件名经常更改,每次执行大约有 10 个文件。我可以删除一些,其他的则不可以,发出上述警告。可以是任何不接受unlink((的字符吗?我有一些转义保留字符,例如 /''?%*:|"<>。http://en.wikipedia.org/wiki/Filename

我尝试使用哈希(sha1、sha256 和 sha512(而不是base64_encode,但错误仍然存在。

由于您在" "内部使用 /所以/ char 不是普通字符,它通常用于转义特殊字符(wen 在双引号内使用(,但如果您想忽略字符串值定义中的任何/,只需使用 //因此,第一个正斜杠将转义第二个斜杠,PHP将它们视为一个斜杠但是不要忘记转义美元符号 ( $ ( 以及所有特殊字符或将引号从 " 更改为 ' 这样您就不必更改字符串值中的任何内容:

<?php
$path = 'F:/www/__DADOS__/__SESSAO/__9987f2bfdfb80bce8fd72402887bb2c50a433ae0__E6nDSMnD7TCY5#47$BNCx0e#47$r#47$ByZJvcyMIazXSYWBWBXN5lgdZOd3Ps#47$ROrVSPl7QVQaCqfa2WezCauk#47$LVFyhgw==.meudominio.com.sessid';
//OR
$path = "F://www//__DADOS__//__SESSAO//__9987f2bfdfb80bce8fd72402887bb2c50a433ae0__E6nDSMnD7TCY5#47/$BNCx0e#47/$r#47/$ByZJvcyMIazXSYWBWBXN5lgdZOd3Ps#47/$ROrVSPl7QVQaCqfa2WezCauk#47/$LVFyhgw==.meudominio.com.sessid";
echo file_exists($path);//will return 1
//unlink($path);
?>

尝试

$path ="F:/www/__DADOS__/__SESSAO/__9987f2bfdfb80bce8fd72402887bb2c50a433ae0__E6nDSMnD7TCY5#47$BNCx0e#47$r#47$ByZJvcyMIazXSYWBWBXN5lgdZOd3Ps#47$ROrVSPl7QVQaCqfa2WezCauk#47$LVFyhgw==.meudominio.com.sessid"