【问题标题】:Are server security restrictions causing issues with allow_url_fopen & allow_url_include服务器安全限制是否会导致 allow_url_fopen 和 allow_url_include 出现问题
【发布时间】:2017-05-31 13:08:39
【问题描述】:

我“卡在”我的 Apache 网络主机和我的开发人员之间 - 寻求指导。我不是一个称职的开发人员 - 所以请放心帮我解答。

我有一个页面通过 API V3.27 做两件事之一: 1. 将 Lat、Lng 发送到谷歌地图并显示街景 2. 将地址发送到谷歌地图并显示街景 + 保存纬度、经度、间距等以供将来使用。

在我的虚拟主机将我的网站移动到新服务器之前,一切都很好。现在任务 2 失败并出现以下错误:

PHP 警告:file_get_contents(): http:// wrapper is disabled in server configuration by allow_url_fopen=0 in /home/(domain)/public_html/functions.php on line 8

file_get_contents(http://maps.google.com/maps/api/geocode/json?address=1600+Amphitheatre+Pkwy,+Mountain+View,+CA+94043&sensor=false):无法打开流:在第 8 行的 /home/(domain)/public_html/functions.php 中找不到合适的包装器

我的开发人员试图从 cpanel 启用 allow_url_fopen 和 allow_url_include ,但没​​有成功。

以上是否表明开发人员需要进行一些代码更改,或者是与我的 Web 主机告诉我的以下安全限制之一相关的问题在我的服务器上存在(我无法让他们告诉我是否相同的限制适用于旧服务器)。

"以下 PHP 函数被全局禁用" exec、passthru、system、popen、show_source、proc_open、shell_exec、eval、ini_set

如果上述任何限制导致 Google Maps API 出现问题,那么网络托管服务商有此类限制是常见的还是不常见的。

=== 如果问题实际上是由于我的服务器的限制,我将不得不找到一个新的网络主机(传输站点和 SSL 的大量工作,但如果问题是由于页面的编码方式造成的,那么我需要去返回给我的开发人员进行代码更改。

欢迎任何需要澄清的指示或问题。

【问题讨论】:

  • Stack Overflow 是一个编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参阅帮助中心的What topics can I ask about here。也许Super UserUnix & Linux Stack Exchange 会是一个更好的提问地方。另见Where do I post questions about Dev Ops?
  • 我发现这很有用,我认为这个问题确实在堆栈溢出中占有一席之地,但只需要重新措辞。 IE。这是我的代码:如何在不使用 file_get_contents 的情况下执行此操作,因为我的主机不允许我启用 allow_url_fopen 和 allow_url_include。

标签: php security google-maps-api-3


【解决方案1】:

您总是可以使用curl 并使用:

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "http://maps.google.com/maps/api/geocode/json?address=1600%20Amphitheatre%20Pkwy%2C%20Mountain%20View%2C%20CA%2094043&sensor=false");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$result = curl_exec($ch);

if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
} else {
    // use your $result response here what Google returns
    echo $result;
}

curl_close ($ch); // curl_errno must be before curl_close

【讨论】:

  • 非常感谢您的回复。由于我没有足够的声誉,我无法投票支持您的回复。似乎许多人对 stackoverflow 的看法是“除非你是专家,否则不要问问题”——这可以从对这个问题和以前的问题的反对票中看出。再次感谢您的帮助。我希望你不会介意更多的非专家问题。如果开发人员需要以下任何一项,这是错误的编码,还是谷歌地图 API 始终需要这些中的任何一项。 allow_url_fopen、allow_url_include 还是 ini_set?
  • 这是我在functions.php上的代码的一小部分,这是否在您的代码应该替换现有代码的正确位置。我不会尝试自己,我只是想向我的开发人员指出他没有使用最合适的代码的地方(如果有的话) - 我可能没有提供足够或正确的信息让你正确回答,但任何建议将不胜感激
  • [代码提取] function get_lat_long($address) { $address = str_replace(" ", "+", $address); $json = file_get_contents("maps.google.com/maps/api/geocode/…); $json = json_decode($json); if(count($json->{'results'}) > 0) { $lat = $json->{'results'} [0]->{'geometry'}->{'location'}->{'lat'}; $long = $json->{'results'}[0]->{'geometry'}->{ '位置'}->{'lng'}; $latlong=$lat.','.$long;
  • 再次感谢,快速解决方案是移动到不同的网络主机,一切正常。开发人员已同意在未来某个阶段更改代码以使用 Curl。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-11
  • 2012-03-16
  • 2015-04-09
  • 2021-08-27
  • 1970-01-01
相关资源
最近更新 更多