我最终“解决”其他人的代码问题,因为该网站已关闭,我们无法抓住它们,但我不使用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设置为第一个arg的原因。
答案 0 :(得分: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
错误的根本原因。