PHP file_exists和unlink不起作用

时间:2013-08-27 00:38:46

标签: php warnings file-exists unlink

源代码(Código):

$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 访问该文件,但要及时删除或验证是否存在失败。任何人都有线索?

$path的总大小为241

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

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

谢谢。


原始语言: PT-BR

没有códigoacimaobtenho o alerta No such file or directory em unlink($path); eoarquivonãoéexxluído,eutambémtenteiusar {{1 }} para verificararevenênciadoarquivo antes,eoretornoé: file_exists

O false cria o arquivo corretamente(verificado),包含com oconteúdocorreto。 Eutambémconsigo acessar oarquivoatravésde file_put_contents ,mas na hora de excluir ou verificarannileênciaobtenhoinsucesso。 Alguémtemuma dica?

O tamanho total de file_get_contentsé$path

O problema parecer mais delicado。 Pois o nome doarquivoéformadopor um base64_encode ,o nome do arquivo muda frequentemente,e eu tenho cerca de 10 arquivosporexecução。 Alguns deles consigo deletar,outrosnão,emitindo o alerta descrito acima。 Seráquepode ser algum caracterequenãquen unlink()nãacerita? Eujáescapoalguns caracteres reservados,como / \?%*:|“<> http://en.wikipedia.org/wiki/Filename

Eu tentei usar hash(sha1,sha256 e sha512)no lugar de base64_encode,mas o erro persiste。

Obrigado。

2 个答案:

答案 0 :(得分:2)

由于您在/内使用" "所以/ char不是普通字符,它通常用于转义特殊字符(在双引号内使用) ),但如果您想忽略字符串值定义中的任何/,请使用// 所以第一个正斜杠将从第二个斜杠中逃脱,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);
?>

答案 1 :(得分:0)

尝试

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