关于file_get_contents返回为空或函数不可用的解决方

网络编程 2025-03-24 14:01www.168986.cn编程入门

当你遇到使用 `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 参数

Copyright © 2016-2025 www.168986.cn 狼蚁网络 版权所有 Power by