在PHP中,有两种读取远程文件的方法。一种通过设置php配置文件实现,另一种通过加载PHP扩展cURL来实现。下面分别介绍这两种方法。
方法一 :开启allow_url_open
- 开启方法是在php配置文件中将“allow_url_open”的值设为On或1,保存文件后重启Apache。
- 示例:
<?php // 通过开启allow_url_open来读取远程文件 $str = file_get_contents("http://www.iteye.com"); if($str != false) echo $str; ?>
- 需要注意的是,当开启allow_url_open后,存在RFI(Remote File Inclusion)攻击风险。
方法二: 利用cURL模块
- 由于cURL扩展是PHP控制模块,默认情况下是没有被加载的。加载方法是在PHP配置文件中找到“;extension=php_curl.dll”,去掉前面的分号,重启Apache。
- 示例:
<?php // 通过cURL扩展来读取远程文件 // 初始化cURL会话,返回资源句柄 $init = curl_init("http://www.iteye.com"); // 设置cURL传输项 // 将服务器返回的“Location:”放在header中递归的返回给服务器 curl_setopt($init, CURLOPT_FOLLOWLOCATION, 1); // 将curl_exec()获取的信息已文件流的方式返回,而不是直接输出,方便对信息下一步的处理 curl_setopt($init, CURLOPT_RETURNTRANSFER, 1); // 执行一个cURL会话,成功返回执行结果,失败返回false(与 // CURLOPT_RETURNTRANSFER的设置有关) $str = curl_exec($init); if($str != false) echo $str; // 关闭会话,并且释放资源 curl_close($init); ?>
- 使用cURL扩展的好处是,可以不必开启allow_url_open,因而降低了RFI攻击的风险,提高了应用的安全性。