PHP feof()第一个参数为False



我最终"解决"了别人的代码问题,因为网站关闭了,我们无法控制他们,但我不使用PHP,我认为这是有效的,但不是出于正确的原因:

他们有这样的东西:

$file = ../somedir/somefile.txt;
$fh = fopen($file, 'r');
while (!feof($fh)) {
$line = fget(...

但是页面没有加载。

基于日志中的错误,我最终将feof行更改为:

while (feof(False, $fh)) {

这实际上似乎已经解决了这个问题,但在看了feof()的文档后,我认为我所做的根本不对。

添加False作为PHP的feof()函数的第一个参数的影响是什么?

更新:日志错误是feof() expects parameter 1 to be resource, boolean given in,我把布尔值设置为True False,这就是为什么我把False设置为第一个参数。

添加False作为PHP的第一个参数的影响是什么feof()函数?

feof文档是这样说的:

测试文件指针上的文件结束符。

由于函数中只允许有一个参数,如这里所示:

bool feof ( resource $handle )

你正在设置的False基本上是告诉脚本:

while ([the file handle doesn’t equals false do this]) {

所以你基本上在某种程度上短路了逻辑。但是在没有看到完整的代码或错误消息的情况下,做这样的事情会对整个应用程序的行为产生什么影响是100%不清楚的。

UPDATE:既然你现在说错误日志显示:

feof() expects parameter 1 to be resource, boolean given in

这基本上意味着问题是你试图打开的$file,然后用$fh创建一个文件句柄不存在或无法读取:

$file = ../somedir/somefile.txt;
$fh = fopen($file, 'r');

现在最好的解决方案是将条件包装在另一个条件中,像这样:

$file = ../somedir/somefile.txt;
if (file_exists($filename)) {
  $fh = fopen($file, 'r');
  while (!feof($fh)) {
  $line = fget(...
}

但是现在看看你的代码行$file = ../somedir/somefile.txt;是正确的吗?应该是:

$file = '../somedir/somefile.txt';
所以你的代码应该是这样的:
$file = '../somedir/somefile.txt';
if (file_exists($filename)) {
  $fh = fopen($file, 'r');
  while (!feof($fh)) {
  $line = fget(...
}

但过去的任何,我会检查实际文件../somedir/somefile.txt是否存在,并由您的脚本可读。可能是位置发生了变化,或者连接到该文件的权限或用户发生了变化。这很可能是feof() expects parameter 1 to be resource, boolean given in错误的根本原因。

相关内容

  • 没有找到相关文章

最新更新