-1

我最终“解决”了其他人的代码问题,因为该站点已关闭,我们无法获得它们,但我不使用 PHP,我认为这是有效的,但不是出于正确的原因:

他们有类似的东西:

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

但是页面没有加载。

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

while (feof(False, $fh)) {

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

添加False作为 PHPfeof()函数的第一个参数有什么影响?

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

4

1 回答 1

1

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

好吧,这是feof文档中的内容:

测试文件指针上的文件结尾。

而且由于函数中只允许使用一个参数,如下所示:

bool feof ( resource $handle )

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

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

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

更新:既然你现在说错误日志说:

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错误的根本原因。

于 2014-05-30T02:59:36.703 回答