file_get_contents无法正常工作?

时间:2011-10-17 13:39:05

标签: php regex file-get-contents

此代码不适用于服务器。但它适用于我的localhost(xampp)

$url = file_get_contents('http://www.site.com/');
$xhtml='|<tr style="background-color:#dddddd;">
        <td class="odd" align="left">(.+?)</td><td class="odd">(.+?)</td>
    </tr>|i';
preg_match_all($xhtml,$url,$score);
array_shift($score);
echo"<pre>";
print_r($score);
echo"</pre>";

当我更改这样的代码时会打印另一个分数。因为这样有两行。它有相同的代码。顺便说一句下面的代码工作到服务器。

$xhtml='|<td class="odd" align="left">(.+?)</td><td class="odd">(.+?)</td>|i';

我需要在代码之间取这两个值。

allow_url_fopen = on

6 个答案:

答案 0 :(得分:26)

尝试使用此函数代替file_get_contents():

<?php

function curl_get_contents($url)
{
    $ch = curl_init();

    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_URL, $url);

    $data = curl_exec($ch);
    curl_close($ch);

    return $data;
}

它可以像file_get_contents()一样使用,但使用cURL。

在Ubuntu(或其他具有aptitude的类Unix操作系统)上安装cURL:

sudo apt-get install php5-curl
sudo /etc/init.d/apache2 restart

另见cURL

答案 1 :(得分:19)

您需要允许

 allow_url_fopen

在你的php.ini配置文件中。有些主机因安全性而不允许使用它

答案 2 :(得分:10)

我知道这个话题已经过时了,但我必须自己解决这个问题,并认为这会对以后的人有所帮助。

如上所述:

你需要:

允许url fopen 允许网址

如果您使用CURL,那么您需要卷曲扩展

如果你是https://的file_get_contents,我相信你也需要apache ssl模块,以及openssl php扩展。

如果没有OpenSSL和SSL模块在facebook图表上执行file_get_contents(显然是https://),则会返回“No file found”错误。

答案 3 :(得分:2)

同时检查您是否: allow_url_include On

并确保没有网络权限问题,例如 403 Forbidden

答案 4 :(得分:0)

我们遇到了这个问题,结果证明这是不寻常的。我们试图使用file_get_contents('https://www.google.com');我们的问题是因为服务器设置为使用ipv6但没有分配ipv6 ip。我们禁用了ipv6并让它使用ipv4并且它有效。列表上的另一件事就是检查。

答案 5 :(得分:0)

如果function dowloadToFolder(url, name, subfolder) { browser.downloads.download({ url: url, filename: `${subfolder}/${name}` }); } allow_url_fopen,则禁用您的 防火墙 csf 再次检查。