关于file_get_contents返回为空或函数不可用的解决方
当你遇到使用 `file_get_contents` 获取远程文件内容返回为空或提示该函数不可用时,别担心,本文为你提供了解决方案!
要确保在使用 `file_get_contents` 和 `fopen` 函数时,空间已开启 `allow_url_fopen`。通过编辑 phpi 文件,设置 `allow_url_fopen = On`。当 `allow_url_fopen` 关闭时,`fopen` 和 `file_get_contents` 都无法打开远程文件。
如果你使用的是虚拟主机,可以考虑使用 `curl` 函数作为替代方案。`curl` 函数的使用示例如下:
```php
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, '
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
```
你可以使用 `function_exists` 函数来判断 PHP 是否支持 `file_get_contents`。如果不支持,则可以使用 `curl` 函数作为替代方案。
需要注意的是,如果你的主机服务商关闭了 `curl`,建议你考虑更换主机商。即使 `allow_url_fopen` 设置为 off,也并不意味着你的主机不支持 `file_get_contents` 函数。只是不能打开远程文件而已。`function_exists('file_get_contents')` 返回的仍然是 true。
原代码:
```php
if (function_exists('file_get_contents')) {
$file_contents = @file_get_contents($url);
} else {
$ch = curl_init();
$timeout = 30;
curl_set($ch, CURLOPT_URL, $url);
curl_set($ch, CURLOPT_RETURNTRANSFER, 1);
curl_set($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
}
```
```php
function fetchWebPageContent($url) {
// 尝试使用 file_get_contents 获取内容
if (function_exists('file_get_contents')) {
$file_contents = @file_get_contents($url); // 这里可能会捕捉到一些警告或错误,因此我们使用 @ 前缀来抑制错误输出。
if ($file_contents === false) { // 如果获取失败,我们将采用 cURL 方法获取内容
$ch = curl_init(); // 初始化 cURL 会话
$timeout = 30; // 设置连接超时时间
curl_setopt($ch, CURLOPT_URL, $url); // 设置 URL 参数
编程语言
- 关于file_get_contents返回为空或函数不可用的解决方
- JavaScript静态作用域和动态作用域实例详解
- 如何判断出一个js对象是否一个dom对象
- 解析php入库和出库
- 实现div滚动条默认最底部以及默认最右边的示例
- 移动端网页开发调试神器Eruda的介绍与使用技巧
- asp Http_Referer,Server_Name和Http_Host
- 关于jQuery里prev()的简单操作代码
- JS操作xml对象转换为Json对象示例
- Codeigniter中禁止A Database Error Occurred错误提示的方
- PHP实现转盘抽奖算法分享
- NodeJs中express框架的send()方法简介
- php简单创建zip压缩文件的方法
- jquery表单对象属性过滤选择器实例分析
- SQL server使用自定义函数以及游标
- .NET UEditor使用方法说明