带有https的file_get_contents给出了奇怪的第一个字符

时间:2013-09-01 23:19:32

标签: php composer-php

尝试调试我的Windows机器而不是我的linux服务器上发生的编写器错误。这是我正在尝试执行的代码

$url = "https://packages.zendframework.com/packages.json";
var_dump(file_get_contents($url));

当我执行此操作时,我会得到类似:http://grab.by/pSFI

的内容

正如你所知,开头的奇怪的utf8角色不应该存在。使用非安全协议时不会发生这种情况(但是这个网址仍然保留了301,因此无法进行演示)。

有什么想法吗?这是一个openssl dll问题吗?

2 个答案:

答案 0 :(得分:1)

这是一个Windows设置问题,通过使用xamp而不是wamp来解决。我的wamp实例使用的php构建中存在一个错误,它会破坏ssl目标上的file_get_contents。切换到xamp后它正常工作。

答案 1 :(得分:0)

这些步骤通常会起作用,因为它们是我能够在其中看到该角色的唯一原因。

  1. 打开您的文件。
  2. 确保它具有UNIX行结尾。
  3. 在保存时修剪空白区域。
  4. 确保第一个角色前没有任何内容。 (如果你没有看到任何东西,请在第一个角色之前点击退格以获得乐趣,以防控制角色以某种方式被复制粘贴在你看不见的地方)
  5. 确保您的服务器返回UTF-8编码标头
  6. 另外,不要在不同的环境中开发......所有这些都应该匹配。不同系统之间可能存在许多不同的怪癖。在我们同步所有环境之前,我甚至在一个环境中遇到memcache个问题,而在另一个环境中没有问题。更糟糕的是,您可能看不到生产环境中弹出的开发环境中的错误......然后您将无法对其进行调试。