使用未修改的 soda-php 演示,得到 'Error "0" from server:'

Using unmodified soda-php demo, getting 'Error "0" from server:'

我是 运行 XAMPP/Win10, PHP 7.0.1。我抢了Socrata/soda-php from GitHub and ran the index.php。我没有对文件进行任何更改。

当我提交表格时,我总是得到 Error "0" from server: 没有其他信息。我的 PHP 错误日志中没有任何内容。

access the JSON output directly 没问题。我也可以用客户端抓取并解析它 JavaScript.

我查看了 another question with the same problem, but it was a different dataset and so the answer didn't apply. I also checked a suggestion on that question that I enable cURL,我确认了。

我希望使用此 PHP 示例从 CMS 访问数据(我已经在使用 JavaScript),但我需要先让它按原样工作,这样我才能自学下一步。

为了确认这在 soda-ruby 中不是问题,我做了一些本地测试,并且我能够让示例在 PHP 7.0.3 中正常工作(CLI server,通过自制软件全新安装)。

示例代码 return 结果为零,因为该位置的危险狗显然已经移动,所以我更新了默认位置和搜索范围。我还更新了示例以对该数据集使用新的 SODA 2.1 endpoint,即使 2.0 版本现在仍然可以正常工作。因此,请务必获取最新更新,以便我们保持同步。

Error "0" 消息实际上来自 libcurl 本身。这意味着 cURL 即使与 data.austintexas.gov 连接也有问题,这通常意味着您的系统无法完成 SSL 握手,因为 PHP/libcurl 不信任远程服务器的证书。我在 Austin 的网站上看到过很多次,而且经常看到 Windows 用户。我怀疑是这种情况,特别是考虑到您可以通过 JavaScript.

访问相同的 API

解决方案是更新您的根证书或指向未与 XAMPP 绑定的外部证书颁发机构。我自己从来没有用 XAMPP 做过,但这似乎是一个可靠的答案:Enabling SSL Support for CURL in XAMPP

提议的修复程序之一还完全禁用 SSL 验证,如果您只是想使用 PHP 进行一些破解而不是在生产中使用,这将是可以的。但是请不要在生产中使用该解决方法,因为它会使您容易受到 MITM 攻击。