PHP在localhost和服务器之间的不同行为

时间:2015-01-01 05:00:17

标签: php

function feedSearch($url) {

      if($html = @DOMDocument::loadHTML(file_get_contents($url))) {

          $xpath = new DOMXPath($html);

          $feeds = $xpath->query("//head/link[@href][@type='application/rss+xml']/@href");

          if($feeds->length != 0){
            $url = rtrim($url, '/');

            if(strpos($url, 'https://')){
              $url = ltrim($url, 'https://');
              return $feedURL = $url . "/feed";
            }else{
              return $feedURL = $url . "/feed";
            }

          } 
  }

  return false;

}
if(feedSearch($url)){
  $xml = feedSearch($url);
}else{
    echo $url . " is not a valid feed URL.";
    die();
}

上面的代码在我的localhost中运行良好,但在我的服务器中运行不正常。在服务器中它会死。我不知道我的服务器中缺少了什么。如何在PHP中调试版本问题?

1 个答案:

答案 0 :(得分:1)

您需要在服务器的php.ini文件中添加allow_url_fopen = On

或者,如果您无法访问php.ini文件,则可以在.htaccess文件中添加php_value allow_url_fopen On

或者正如@Ohgodwhy指出的那样,使用卷曲更好。 您可以使用curl创建自己的函数,然后使用它而不是file_get_contents

function get_contents_from_url($url)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_URL, $url);

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

    return $response;
}