我最终"解决"了别人的代码问题,因为网站关闭了,我们无法控制他们,但我不使用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
错误的根本原因。