【发布时间】:2013-08-29 14:17:47
【问题描述】:
$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,但错误仍然存在。
【问题讨论】:
-
你应该在你的字符串值周围使用双引号或单引号
$path$path = "F:/www/__DADOS__/__SESSAO/__9987f2bfdfb80bce8fd72402887bb2c50a433ae0__E6nDSMnD7TCY5#47$BNCx0e#47$r#47$ByZJvcyMIazXSYWBWBXN5lgdZOd3Ps#47$ROrVSPl7QVQaCqfa2WezCauk#47$LVFyhgw==.meudominio.com.sessid"但是你确定你的文件名有那么长???,并且包含#???跨度> -
见谅,她已经在引号里了,只是忘了放这里,如果我们没有错误的话,这行不是这样的。谢谢你。有什么建议吗?
-
如果说你忘记了
"周围的$path值,我猜你在这个 var 定义的末尾也有;但是你忘了写在这里,然后您的代码没有任何问题,并且您正在使用它读取文件的 var 相同;你应该可以用它来删除文件“unlink()” -
我每次运行大约有 10 个文件,它适用于某些文件,但不适用于其他文件。我推断这是一个问题,但不确定。
标签: php warnings file-exists unlink