Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP文件内容是否有限制?_Php_File Get Contents_Large Files - Fatal编程技术网

PHP文件内容是否有限制?

PHP文件内容是否有限制?,php,file-get-contents,large-files,Php,File Get Contents,Large Files,我正在尝试使用php文件获取内容来读取一个大文件(10M) $file = 'http://www.remoteserver.com/test.txt'; $data = file_get_contents( $file ); var_dump ( $data ); 它倒回去了 string(32720) 然后输出,只显示文件的一部分。文件内容是否有限制?我试着做ini_设置(“内存限制”,“512M”),但没有成功 编辑:*忘了提及**这是一个远程文件 问题已解决::硬盘空间不足。修复了这

我正在尝试使用php文件获取内容来读取一个大文件(10M)

$file = 'http://www.remoteserver.com/test.txt';
$data = file_get_contents( $file );
var_dump ( $data );
它倒回去了

string(32720)
然后输出,只显示文件的一部分。文件内容是否有限制?我试着做ini_设置(“内存限制”,“512M”),但没有成功

编辑:*忘了提及**这是一个远程文件


问题已解决::硬盘空间不足。修复了这一问题,现在一切正常。

假设要加载的文件内容在逻辑上以换行符分隔(例如:不是二进制文件),那么逐行读取可能会更好

$fp = fopen($path_to_file, "r");  
$fileLines = array();
while (!feof($fp)){
  array_push(fgets($fp),$fileContents);
} 
fclose($$fp);
如果您真的需要将文件放在一个“块”中,则始终可以
内爆()
(通过选择换行符)将数组恢复为单个字符串

参考-


不应该有这样的限制。它显示文件的开始还是结束?您确定它读取的文件正确吗?当您稍微缩短文件时,它会转储什么?在加载之前转储
filesize($file)
,在加载之后转储
strlen($data)
。我有点好奇它会产生什么结果。你有没有试着对文件执行fread()操作?如果是这样,您是否遇到了相同的问题?请尝试使用浏览器下载文件,将其存储在本地,然后使用file_get_contents()缩小问题范围。这里唯一的限制应该是本地内存,但在这种情况下,您会从PHP收到一条错误消息(如果设置了显示错误)。。。32720非常接近32767,即最大4位有符号整数。这是否只是巧合,我不确定……我怀疑对于如此大的文件,它们是二进制的,所以
fgets
可能不是一个好主意。@ale-好的观点。我已经澄清了关于所讨论文件的假设。@ale-(刚刚注意到)在OP提供的代码示例中,提供了一个
.txt
扩展名。所以这可能毕竟是相关的。好的一点,我错过了扩展
fgets()
也会随机截断大于16k的行(正如
stream\u get\u line()
(或多或少,取决于您如何设置块大小),最好只使用
fread()
如果你希望有很长的线路,你可以自己处理EOL/EOF。一周前,这实际上是以一种相当恶劣的方式咬了我的屁股。不过,我相信fgets()是(5.3+)二进制安全的,只要你注意很长的线路。