2010-04-30 107 views
0
<?php 
include_once('booter/login/includes/db.php'); 

$query="SELECT * FROM shells"; 
$result=mysql_query($query); 
while($row=mysql_fetch_array($result, MYSQL_ASSOC)){ 

$hash = @md5_file($row['url']); 
echo $hash . "<br>"; 
    } 
?> 

以上是我的代碼。通常它可以在大多數URL上完美地工作,但是每隔一段時間它就會跳過一行上的md5,就好像它不檢索它,即使該文件在那裏。使用md5_file();有時不返回md5?

我不明白爲什麼。有任何想法嗎?

編輯:在拆除 '@' 它返回:

[function.md5-file]: failed to open stream: No such file or directory

+0

$ row ['url']的示例值是什麼?它是否包含協議?嘗試打開沒有協議的URL會導致失敗。 – jasonbar 2010-04-30 03:35:05

+0

'http:// example.com/file.php' – Rob 2010-04-30 03:36:35

回答

1

@md5_filesuppresses any warnings/errors前可能籌集。刪除@將允許顯示來自md5_hash的錯誤,並允許您查看偶爾失敗的原因。


No such file or directory只是意味着存在與已搜索的名稱的文件。您可能需要檢查導致這些警告的URL;也許他們指的是已被重命名或移動的文件。

+0

不知道爲什麼我沒有想到這一點。話題編輯 – Rob 2010-04-30 03:08:43

+0

我檢查了網址。它有 – Rob 2010-04-30 03:14:54

+1

如果你想調試它,打印行值,如果你遇到任何錯誤(所以你可以看到他們的PHP)。如果您只是想避免錯誤,請檢查在生成MD5之前是否可以找到(和/或打開)文件。 – ssube 2010-04-30 03:15:29