PHP file_get_contents()和cURL都失败了

时间:2014-05-29 05:30:02

标签: php curl file-get-contents

我知道对于这个论坛上的许多好人来说这可能是老套的,但经过几个小时的狩猎,我仍然遇到了麻烦。

我已经确认我可以简单地调用file_get_contents()来工作:

$content = file_get_contents('example.com');
print $content;

(按预期输出网站内容。)

而且,如果我将我的脚本生成的其中一个URL直接插入浏览器,那也是有用的:

http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO2&Sect2=HITOFF&u=/netahtml/PTO/search-adv.htm&r=0&p=1&f=S&l=50&Query=AN/"联盟信号" AND((((((((CCL / 29 / $ OR CCL / 62 / $)或CCL / 165 / $)或CCL / 180 / $)或CCL / 236 / $)或CCL / 237 / $)或CCL / 241 / $)或CCL / 248 / $)或CCL / 417 / $)& d = PTXT

(实际上,这是在我的代码中生成/存储为名为$ url的文字字符串。但是,我注意到我输入的内容是引号在这里丢失的东西。不确定这是否转换为我的问题与否。)

但是,当我尝试将两者合并时,它会立即失败:

    $content = file_get_contents($url);
    print $content;

(什么都不输出。)

我已经尝试了迄今为止我所见过的有关cURL的各种用途的所有建议,当然还有json试图弄清楚发生了什么。但是,除了我将HTTP 400吐出的一个案例,以及输出为NULL的另一个案例(对不起,我丢失了我正在阅读的特定帖子的链接),那里没有运气。

我确信这件事非常简单,我在这里失踪了,我可能会::当我找到它时,但是现在我被卡住了。有什么建议吗?

提前致谢

编辑:我忘了在错误日志中包含任何内容。 编辑:allow_url_fopen设置正确。 编辑:当调用上面的示例时,使用urlencode($ url)会产生以下错误... [29-May-2014 02:08:57 America / New_York] PHP警告:file_get_contents(http%3A%2F%2Fpatft.uspto.gov%2Fnetacgi%2Fnph-Parser%3FSect1%3DPTO2%26Sect2%3DHITOFF%26u%3D% 2Fnetahtml%2FPTO%2Fsearch-adv.htm%26R%3D0%26P%3D1%26F%3DS%26升%3D50%26Query%3DAN%2F%22allied +信号%22%0D 0A%+ AND +%28%28%28% 28%28%28%28%28CCL%2F29%2F%24 + OR + CCL%2F62%2F%24%29 + OR + CCL%2F165%2F%24%29 + OR + CCL%2F180%2F%24% 29 + OR + CCL%2F236%2F%24%29 + OR + CCL%2F237%2F%24%29 + OR + CCL%2F241%2F%24%29 + OR + CCL%2F248%2F%24%29 + OR + CCL%2F417%2F%24%29%26d%3DPTXT):无法打开流:第21行的C:\ inetpub \ wwwroot \ PHP-CGI \ test.php中的参数无效

编辑:一些测试代码......

<?php
    print "Testing...<BR>";
    define("PATFT_head",'http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO2&Sect2=HITOFF&u=%2Fnetahtml%2FPTO%2Fsearch-adv.htm&r=0&p=1&f=S&l=50&Query=AN%2F%22');
    define("PATFT_foot",'%22+AND+%28%28%28%28%28%28%28%28CCL%2F29%2F%24+OR+CCL%2F62%2F%24%29+OR+CCL%2F165%2F%24%29+OR+CCL%2F180%2F%24%29+OR+CCL%2F236%2F%24%29+OR+CCL%2F237%2F%24%29+OR+CCL%2F241%2F%24%29+OR+CCL%2F248%2F%24%29+OR+CCL%2F417%2F%24%29&d=PTXT');
    $assignees = file("./config/assignees.txt");
    foreach ($assignees as $name) {
    $url= PATFT_head.$name.PATFT_foot;
    $content = file_get_contents($url);
    #print "Should see the page here...<BR>";
    print $content;
    }
    print "<BR>Done.";
?>

assignees.txt的内容是一系列搜索词(在这种情况下是专利持有人的受让人名称),每行1个。

2 个答案:

答案 0 :(得分:0)

尝试urlencode

  $content = file_get_content(urlencode($url));
    print $content;

答案 1 :(得分:0)

PHP INI中有allow_url_fopen的设置。确保将其设置为true或1。