在PHP中实现fgets()函数

3

我正在使用Windows操作系统,并且对PHP很陌生。 我想在PHP文件中实现php函数fgets():

$file = fopen("$DOCUMENT_ROOT/Chapter02/test.txt","r");

while(! feof($file))
  {
  echo fgets($file). "<br />";
  }

fclose($file);

我已创建了test.txt文件,其内容如下:

Hello, this is a test file.
There are three lines here.
This is the last line.

作为来自http://www.w3schools.com/的示例。
两个文件,.php和.txt都位于一个目录中:
C:/wamp/www/Chapter02/
但执行此php文件后,没有显示任何内容,应该显示:

Hello, this is a test file.
There are three lines here.
This is the last line.

我想,我在"$DOCUMENT_ROOT/Chapter02/test.txt"路径上犯了错误,但我真的不知道错误在哪里...
我非常感谢您的帮助:)
顺祝商祺,
伊万娜

你不应该使用或链接到w3schools - John Conde
2个回答

1

可能的陷阱:

  • 您的文档不存在(您的$DOCUMENT_ROOT变量可能未设置)
  • 您的文档为空

fgets()在所有主要的PHP平台上都以完全相同的方式工作,因此我非常确定您的问题在于文件的存在性,而不是实际的读取代码(看起来很好)

尝试使用var_dump($DOCUMENT_ROOT)手动检查文件是否存在(使用file_exists())。这可能会发现错误。

顺便说一句,W3Schools是一个可怕的学习网站,尽管我不想这么说。他们的许多信息要么过时,要么损坏,要么完全模糊不清。


这个特定的错误发生是因为w3schools的教程假设register_globals可用并启用(因此,变量将从$_SERVER中填充)。 - user149341
正如我所料。将$DOCUMENT_ROOT转换为$_SERVER['DOCUMENT_ROOT']。 - Sébastien Renauld
我根据您的输入进行了检查,并尝试使用var_dump($DOCUMENT_ROOT),它可以正常工作。但是,当我使用file_exists()函数来检查数据文件$DOCUMENT_ROOT/Chapter02/test.txt(我自己创建的文件,文档不为空)时,我收到了文件不存在的消息,这让我有点惊讶... 我该怎么做?还有哪些网站可以替代W3Schools,请给我一些建议。 - Ivana
var_dump($DOCUMENT_ROOT) 应该返回一个实际存在的完整目录。如果它返回 NULL、bool(false) 或其他任何内容,那么这意味着你的 W3S 代码片段假定 register_globals 是开启的,但实际上并没有开启。你最好现在用完整路径替换 $DOCUMENT_ROOT,不要依赖服务器变量,等到它能正常工作后再进行更改。 - Sébastien Renauld
我也尝试了你所写的,我输入了完整的"C:/wamp/www/Chapter02/test.txt","r",但它仍然无法显示txt文件的内容。我还修改了php.ini,将register_globals更改为on,但仍然不起作用...你有什么新的建议吗? - Ivana
我终于发现了问题所在...我不小心将文件命名为test.txt.txt:)))))),因此"c:/wamp/www/Chapter02/test.txt"根本不存在...但是"c:/wamp/www/Chapter02/test.txt.txt"存在,唉,我浪费了一天时间在这上面...无论如何,感谢您的耐心,问候。 - Ivana

0

$DOCUMENT_ROOT更改为$_SERVER['DOCUMENT_ROOT']。除非您自己设置了$DOCUMENT_ROOT,否则应该使用后者,它是从服务器配置中设置的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接