调用URLFetch失败,应用程序错误5为url x

Gru*_*n94 8 php cron google-app-engine curl urlfetch

背景:

我正在使用谷歌应用引擎,我的网站爬虫有一个奇怪的错误.

我有一个后端,每晚会自动抓取一个网站.由于php中的时间限制,这是由推送到pushQueue的任务发起的.

问题:

当我手动运行创建任务的脚本时,任务按预期完成,没有错误.但是当cron启动任务时,我收到以下错误.

调用URLFetch失败,应用程序错误5为url x

码:

function url_get_contents ($Url) {
    global $retry;
    try {
        if (!function_exists('curl_init')){ 
            die('CURL is not installed!');
        }
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $Url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $output = curl_exec($ch);
        curl_close($ch);
        return $output;
    } catch (Exception $e) {
        syslog(LOG_INFO, 'Caught exception: ',  $e->getMessage());
        if($retry > 0){
            $retry -= 1;
            return url_get_contents($Url);
        }
        else{
            return null;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

感谢syslog我可以看到$ url很好,这让我发疯,因为当手动启动完全相同的脚本而不是通过cron时它会起作用.

我怎样才能解决这个问题?

提前致谢.

Sam*_*sov 1

编辑:curl 肯定已安装,因为您有一个首先检查它的语句,所以我的答案不再成立。

CURL错误列表http://curl.haxx.se/libcurl/c/libcurl-errors.html表示错误5是CURLE_COULDNT_RESOLVE_PROXY。不知何故,你的卷曲可能无法访问网络。

您的 CLI 环境可能未启用curl。

在这里查看配置:

php5/       phpmyadmin/ 
root@server1-webhost:~# cd /etc/php5
root@server1-webhost:/etc/php5# ls
apache2  cli  conf.d  mods-available
root@server1-webhost:/etc/php5# cd cli/
root@server1-webhost:/etc/php5/cli# ls
conf.d  php.ini
root@server1-webhost:/etc/php5/cli# cd conf.d
root@server1-webhost:/etc/php5/cli/conf.d# ls
10-pdo.ini   20-gd.ini      20-mssql.ini   20-mysql.ini      20-pdo_mysql.ini
20-curl.ini  20-mcrypt.ini  20-mysqli.ini  20-pdo_dblib.ini
root@server1-webhost:/etc/php5/cli/conf.d# 
Run Code Online (Sandbox Code Playgroud)