5

我想从 youtube 获取数据,我正在使用file_get_contents()方法。

有时它工作正常,但有时它不起作用并显示以下错误

file_get_contents() [function.file-get-contents]: SSL: crypto enabling timeout
file_get_contents() [function.file-get-contents]: Failed to enable crypto
file_get_contents(https://gdata.youtube.com/feeds/api/users/default?access_token=token&v=2&alt=json) [function.file-get-contents]: failed to open stream: operation failed
Maximum execution time of 30 seconds exceeded

上述错误是什么意思?

什么是SSL: crypto enabling timeout

4

3 回答 3

5

有时你不能,因为 SSL。使用卷曲

这应该足够了:

$ch = curl_init('https://youtube.com');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; Linux i686; rv:20.0) Gecko/20121230 Firefox/20.0');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
echo curl_exec($ch);
于 2012-12-31T10:02:46.103 回答
0

您看到的错误是您要连接的服务器与系统上的 SSL 库不兼容。

请检查您使用的 OpenSSL 库是否已过时。要验证这一点,您可能需要联系您的系统管理员。

如果 curl 库使用相同的 SSL 库,David Harris 建议的解决方法也不起作用。

或者,您可以尝试显式地使用 TLS1,这有时会起作用。我建议先在命令行上进行测试,例如使用curl.

此外,您可能想查看包装器使用的PHP Docs中的 SSL 上下文选项(在HTTP Docshttps://旁边)。

于 2012-12-31T11:24:31.510 回答
-2

这个错误意味着php页面的执行时间已经结束。默认情况下,php 模块为任何 php 页面的执行设置 30 秒。您可以使用增加它

ini_set('max_execution_time', time in seconds as per your need);

请在 php 页面的开头编写此函数,并根据需要设置时间。它将覆盖 php 为该特定页面设置的默认执行时间。

于 2012-12-31T10:07:45.170 回答