Google应用程序引擎中的PHP cURL HTTP代码0

Google应用程序引擎中的PHP cURL HTTP代码0,php,google-app-engine,curl,youtube,Php,Google App Engine,Curl,Youtube,我在Google应用程序引擎(GAE)环境中使用curl。我的代码简化如下 $url = 'https://img.youtube.com/vi/rzuYnQwD840/0.jpg'; $handle = curl_init($url); curl_setopt($handle, CURLOPT_RETURNTRANSFER, TRUE); $response = curl_exec($handle); $httpCode = curl_getinfo($handle, CURLINFO_HT

我在Google应用程序引擎(GAE)环境中使用curl。我的代码简化如下

$url = 'https://img.youtube.com/vi/rzuYnQwD840/0.jpg';
$handle = curl_init($url);
curl_setopt($handle,  CURLOPT_RETURNTRANSFER, TRUE);
$response = curl_exec($handle);
$httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE);
只要
$url
是有效的,就可以预期
$httpCode
为200。这就是我在本地测试代码时得到的结果。上个月,当GAE被推出时,该代码也在上个月的生产中使用。今天我们注意到,
$httpCode
现在在GAE上显示为0。有办法解决这个问题吗?我只需要测试对URL请求的响应是否为200


更新:问题似乎仅限于YouTube?Vimeo似乎没有问题(例如,
$url=https://vimeo.com/api/v2/video/149497499.json“;
)。

第一种方法:

将$url替换为“”

此问题是由SSL引起的。您正在访问一个安全的URL

第二种方法:

使用以下代码:

$url = 'https://img.youtube.com/vi/rzuYnQwD840/0.jpg';
$handle = curl_init($url);
curl_setopt($handle,  CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, 0);
$response = curl_exec($handle);
$httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE);

第一种方法:

将$url替换为“”

此问题是由SSL引起的。您正在访问一个安全的URL

第二种方法:

使用以下代码:

$url = 'https://img.youtube.com/vi/rzuYnQwD840/0.jpg';
$handle = curl_init($url);
curl_setopt($handle,  CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, 0);
$response = curl_exec($handle);
$httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE);

所以我在另一个GAE问题()中找到了我想要的答案。在应用程序基本目录中的
php.ini
文件中,添加以下内容:

google_app_engine.enable_curl_lite = "1"
我使用Apache进行本地开发,但是如果您在本地使用GAE,那么添加以下内容

extension = "curl.so"

NB一次只能在
php.ini
文件中包含其中一个。它将忽略第二个问题。

因此我在另一个GAE问题()中找到了我想要的答案。在应用程序基本目录中的
php.ini
文件中,添加以下内容:

google_app_engine.enable_curl_lite = "1"
我使用Apache进行本地开发,但是如果您在本地使用GAE,那么添加以下内容

extension = "curl.so"

NB一次只能在
php.ini
文件中包含其中一个。它将忽略第二个选项。

SSL似乎不是问题所在。请参阅我问题的更新-Vimeo https请求工作正常。我曾满怀希望地在GAE上尝试过此方法-但不起作用。你测试过这个还是只是猜测?是的,我已经测试过了。我认为,你的网站是没有SSL证书的。请在发出请求时添加以下行:curl\u setopt($handle,CURLOPT\u SSL\u VERIFYPEER,0)。SSL似乎不是问题所在。请参阅我问题的更新-Vimeo https请求工作正常。我曾满怀希望地在GAE上尝试过此方法-但不起作用。你测试过这个还是只是猜测?是的,我已经测试过了。我认为,你的网站是没有SSL证书的。请在发出请求时添加以下行:curl_setopt($handle,CURLOPT_SSL_VERIFYPEER,0)。