提问人:TwixxyKit 提问时间:5/21/2010 最后编辑:user229044TwixxyKit 更新时间:5/21/2010 访问量:1918
php - feof 错误
php - feof error
问:
我尝试读取的文件是 pgp 加密文件。这是解密过程的一部分,我实际上正在尝试将内容读入字符串中,以便我可以解密它。我不确定这是否是这里的核心问题,但我收到一个错误:
Warning: feof(): supplied argument is not a valid stream resource
文件代码如下:
if($handle = opendir($dir)) {
while( false !== ($file = readdir($handle))) {
if($file != "." && $file != "..") {
$fhandle = fopen($file, "r");
$encrypted = '';
$filename = explode('.',$file);
while(!feof($fhandle)) {
$encrypted .= fread($fhandle, filesize($file));
}
fclose($fhandle);
$decrypted = $filename[0].'.txt';
shell_exec("echo $passphrase | $gpg --passphrase-fd 0 -o $decrypted -d $encrypted");
}
}
}
答:
0赞
Cfreak
5/21/2010
#1
您应该检查 fopen 调用以确保您的文件实际上已被打开。检查它的返回值。
至于修复它,您的工作目录可能与$dir不同。您可能需要
fopen("$dir/$file","r");
除非您先更改到目录。编辑澄清了代码示例是问题的可能解决方案,而不是检查返回值的代码。
0赞
user229044
5/21/2010
#2
您需要检查返回值。该错误指示不包含有效的文件句柄 - 它可能包含 ,失败时返回。$fhandle
false
fopen
查看 http://ca.php.net/manual/en/function.fopen.php
2赞
Your Common Sense
5/21/2010
#3
了解如何调试代码。
supplied argument is not a valid stream resource
表示传递的变量包含意外值。因此,我们可以得出一个合乎逻辑的结论,即返回此变量的函数失败了。
那么,我们必须检查是什么让它失败了?也许我们可以检查文件是否存在?等等。fopen($file, "r");
这称为调试,没有它就无法编程。
虽然看起来很奇怪。 因为 fopen 也应该抛出错误。
评论
1赞
TwixxyKit
5/21/2010
真?你一定要那么讨厌吗?我假设 fopen 会抛出错误,因此我的问题。但是,真的,如果你不能管理文明,就不要回应。生活已经够艰难了,不必与那些无法克制成为屌丝的人打交道。
1赞
Your Common Sense
5/21/2010
所以,不要交易。你也可以忽略我的回答;)
0赞
Your Common Sense
5/21/2010
但是,让我们和平相处。老实说,@TwixxyKit你的案子很奇怪,我急于找出答案。请原谅我的语气,但这是因为你的.听起来有点无知。无论如何。您通过什么方式收到 feof 错误消息?它被印在屏幕上了吗?显示一次吗?这是您运行的实际代码吗?有@符号吗?"I'm not sure if that's the core problem" [so find it out for me]
评论