【问题标题】:PHP's Curl not working on AppEnginePHP 的 Curl 不能在 AppEngine 上运行
【发布时间】:2015-11-18 20:19:45
【问题描述】:

在本地 AppEngine 上,curl 请求会给出以下结果,这是我所期望的。

[url] => https://spreadsheets.google.com/feeds/spreadsheets/private/full
[content_type] => application/atom+xml; charset=UTF-8
[http_code] => 200
[header_size] => 1243
[request_size] => 231
[filetime] => -1
[ssl_verify_result] => 0
[redirect_count] => 0
[total_time] => 1.05885
[namelookup_time] => 0.520259
[connect_time] => 0.529659
[pretransfer_time] => 0.611242
[size_upload] => 0
[size_download] => 7786
[speed_download] => 7353
[speed_upload] => 0
[download_content_length] => -1
[upload_content_length] => -1
[starttransfer_time] => 1.021271
[redirect_time] => 0
[redirect_url] => 
[primary_ip] => 212.51.211.41
[certinfo] => Array
    (
    )

[primary_port] => 443
[local_ip] => 192.168.0.1
[local_port] => 59361

)

但是当推送到 AppEngine 时,会返回以下内容:

[url] => https://spreadsheets.google.com/feeds/spreadsheets/private/full
[content_type] => 
[http_code] => 0
[header_size] => 0
[request_size] => 0
[filetime] => -1
[ssl_verify_result] => 0
[redirect_count] => 0
[total_time] => 0
[namelookup_time] => 0.056215
[connect_time] => 0
[pretransfer_time] => 0
[size_upload] => 0
[size_download] => 0
[speed_download] => 0
[speed_upload] => 0
[download_content_length] => -1
[upload_content_length] => -1
[starttransfer_time] => 0
[redirect_time] => 0
[redirect_url] => 
[primary_ip] => 
[certinfo] => Array
    (
    )

[primary_port] => 0
[local_ip] => 
[local_port] => 0

关于为什么这不适用于生产中的 AppEngine 的任何想法?我怀疑它与 SSL 证书有关。

我设置了以下参数:

PHP.ini。 - 扩展 =“curl.so” CURLOPT_SSL_VERIFYPEER 设置为 false。

$requestSslContext["cafile"] = 目录名(FILE) 。 '/cacerts.pem';在 IO/Stream.php 中被注释掉了。

【问题讨论】:

  • cloud.google.com/appengine/docs/php/config/php_ini google_app_engine.enable_curl_lite = "1" 可能有帮助 - 你这样做了吗?
  • 看起来不像是 SSL 问题,因为我认为它并没有那么严重。 var_dump(curl_error($ch)); 显示什么?
  • @dre010 - 它返回 0 (!)
  • @PaulCollingwood extension = "curl.so" 适用于本地开发环境, google_app_engine.enable_curl_lite = "1" 适用于生产环境。
  • 我看到你已经解决了,但是 cURL 有一个非常古老的 API。您应该遵循 urlfetch 的文档并使用它,除非您绝对需要 cURL cloud.google.com/appengine/docs/php/urlfetch

标签: php google-app-engine curl


【解决方案1】:

要让它工作:

在 php.ini 中 对于本地开发环境,请使用

extension = "curl.so"

生产环境使用

google_app_engine.enable_curl_lite = "1"

【讨论】:

  • 如果本地开发环境是 Google Cloud Shell,这个答案是否正确?
猜你喜欢
  • 2013-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-24
  • 1970-01-01
  • 2016-11-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多