2
$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);

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

即使内容file_put_contents正确,也会正确创建文件(已检查)。我可以通过 访问该文件file_get_contents,但及时删除或验证存在失败。有人有线索吗?

的总大小$path241

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

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

4

2 回答 2

2

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

<?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);
?>
于 2013-08-27T01:29:10.870 回答
0

尝试

$path ="F:/www/__DADOS__/__SESSAO/__9987f2bfdfb80bce8fd72402887bb2c50a433ae0__E6nDSMnD7TCY5#47$BNCx0e#47$r#47$ByZJvcyMIazXSYWBWBXN5lgdZOd3Ps#47$ROrVSPl7QVQaCqfa2WezCauk#47$LVFyhgw==.meudominio.com.sessid"
于 2013-08-27T00:42:29.327 回答