代码之家  ›  专栏  ›  技术社区  ›  Awais fiaz

cURL请求挂起浏览器并继续等待Cpanel

  •  2
  • Awais fiaz  · 技术社区  · 8 年前

    嗨,我面临一个关于php的问题 cURL 我正在尝试点击一个url并获取一个 xml 然后将其转换为一个数组,在localhost上的我的网站上的某个地方显示数据。它工作正常,但当我将其放在cpanel上时,curl请求没有得到响应,并一直等待响应,并部分挂起浏览器,直到我重新启动浏览器。我是 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT ,0); 但问题仍然存在。 这是我的 卷曲

        if($is_url) {
            if (!($fp = @ fopen($url, 'rb'))) {
                $ch = curl_init();
                curl_setopt($ch,CURLOPT_URL,$url);
                curl_setopt($ch, CURLOPT_USERAGENT, 
                'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2) Gecko/20070219 Firefox/3.0.0.2');
                curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
                curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true);
                curl_setopt($ch, CURLOPT_CONNECTTIMEOUT ,0); 
                curl_setopt($ch, CURLOPT_TIMEOUT_MS, 600);
                $contents = curl_exec($ch);
                curl_close($ch);
    
                if(!$contents)
                    return false;
            }
            while (!feof($fp)) {
                $contents .= fread($fp, 8192);
            }
            fclose($fp);
        } else {
            $contents = $url;
        }
    

    如果您对此有任何帮助,我们将不胜感激。谢谢

    2 回复  |  直到 8 年前
        1
  •  2
  •   Bogdan Stoica    8 年前

    由于您试图在cPanel服务器上运行它,一些php函数可能会被禁用。

    所以首先要做的是检查php函数 allow_url_fopen() 在服务器上启用或禁用。

    php -i | grep php.ini 检查默认情况下加载了哪个php配置文件(这是服务器上的默认配置)。然后签入该php。ini文件并查看是否 允许url\u fopen 在…上 .

    根据您的cPanel服务器配置,特定的cPanel帐户可能使用与服务器上默认版本完全不同的php版本。

    还可以尝试向脚本中添加一些调试,以查看确切的错误消息。您还可以查看Apache错误日志,看看是否在那里找到任何有用的信息。

        2
  •  0
  •   ianm    8 年前

    非常感谢您解决了困扰我几天的问题。主要线索是查看Apache2日志文件。真正的Linux用户将日志称为第一个调用端口,但那些不使用Linux作为主要工作平台的用户往往会忘记它们。 在检查apache2错误日志后,我发现PHP是导致我的问题的原因。更正/var/log/apache2/php。ini(或活动php.ini文件所在的位置),以便

    extension=php_curl.dll
    

    通过移除激活;(注释指示器)。问题解决了!

    推荐文章