file_get_contents,如何开启filegetcontents
大家好,今天小编来为大家解答file_get_contents这个问题,如何开启filegetcontents很多人还不知道,现在让我们一起来看看吧!
php里的file_get_contents 第3个参数的问题
这个context是指“流中的内容”。
我们知道OS操作都由输入输出流控制。
在开启一些特殊文件(unix下任何东西都是文件),比如设备,键盘、屏幕、网络文件、串口
需要输入流进行一些操作。这时候就用stream_context_create制作一份“输入内容”。
实际主要用途,看到大多数实例也是用来进行HTTP操作(实际用途远不局限于这一种功能)
把HTTP的报头Header的内容作为输入流的内容,这种方式开启文件后获得服务返回的内容。
原理上还是对系统文件的输入输出流操作。
<?php
$opts= array(
'http'=>array(
'method'=>"GET",
'header'=>"Accept-language: en\r\n".
"Cookie: foo=bar\r\n"
)
);
$context= stream_context_create($opts);
//提交语言编码和cookie,获得一个网址的响应内容
$file= file_get_contents('http://www.example.com/', false,$context);
?>
希望不会悲剧,说了半天被看不懂
php 使用file_get_contents读取大文件的方法
当我们遇到文本文件体积很大时,比如超过几十M甚至几百M几G的大文件,用记事本或者其它编辑器打开往往不能成功,因为他们都需要把文件内容全部放到内存里面,这时就会发生内存溢出而打开错误,遇到这种情况我们可以使用PHP的文件读取函数file_get_contents()进行分段读取。
函数说明
string
file_get_contents
(
string
$filename
[,
bool
$use_include_path
[,
resource
$context
[,
int
$offset
[,
int
$maxlen
]]]]
)
和
file()
一样,只除了
file_get_contents()
把文件读入一个字符串。将在参数
offset
所指定的位置开始读取长度为
maxlen
的内容。如果失败,file_get_contents()
将返回
FALSE。
file_get_contents()
函数是用来将文件的内容读入到一个字符串中的首选方法。如果操作系统支持还会使用内存映射技术来增强性能。
应用:
复制代码
代码如下:
$str
=
$content=file_get_contents("2.sql",FALSE,NULL,1024*1024,1024);
echo
$str;
如果针对较小文件只是希望分段读取并以此读完可以使用fread()函数
复制代码
代码如下:
$fp=fopen('2.sql','r');
while
(!feof($fp)){
$str.=fread($fp,
filesize
($filename)/10);//每次读出文件10分之1
//进行处理
}
echo
$str;
如何开启filegetcontents
首先要确定PHP版本,file_get_contents需要PHP 4.3以上版本才能运行。然后登录VPS,修改PHP.ini文件,大概在555行,找到下面的内容:
; Whether to allow the treatment of URLs(like http:// or ftp://) as files.
allow_url_fopen= On
如上面,将allow_url_fopen= Off改成On,然后重启VPS就可以了。它的作用是用来获取一个文件或者一个网络资源的全部内容,函数读取的时候都是在内存中运行,所以如果要读取文件或网络资源非常大的话,就不能使用这个函数,因为这个函数读取的方式是一次性加载的,所以内存承受不了。
如果不会用LINUX命令修改,只需要在VPS中安装Webmin就可以管理VPS,里面有PHP Configuration选项,可以在线编辑php.ini文件。如果VPS是windos系统,直接找到php.ini用记事本编辑这个文件就可以了。
php5.6的file_put_contents问题求解
你的代码确实不怎么规范;
有地方不明白你要干
<?php
$txt= intval(file_get_contents('cly.txt'));
file_put_contents('cly.txt', strval($txt+ 1));
echo$txt;
?>
第一句话 intval是强制转换成整数。
file_get_contents返回类型是bool|string
结果就是文件不存返回的是false而在一般的语言中都是false本身就是0.如果存在肯定返回的是里面的字符串。而任何的字符串只要不是数字开头 intval都会返回0。
而php中 Warning不会影响程序继续运行。
所以结果就是第一句话返回的文件不存在就是0,
至于你说的404描述错误。这个不可能产生。
还有代码真的不严谨。
应该这样
$filename='cly.txt';
if(!file_exists($filename)){//文件不存在的时候
file_put_contents($filename,'');//生成文件
}
$txt= intval(file_get_contents($filename));
file_put_contents($filename, strval($txt+ 1));
echo$txt;
这样就不会出现你说的问题了
OK,本文到此结束,希望对大家有所帮助。