【发布时间】:2016-10-06 18:21:52
【问题描述】:
我在 URL 中传递了一个 json 编码的数组,看起来像这样:
http://mywebsite.com/php/edit.php?event={...a bunch of values...}
在 edit.php 页面中,我像这样检索数组:
if(isset($_GET['event'])){
$eventData = json_decode($_GET['event'],true); #return an array
}
这在我的本地 wamp 环境(在 localhost 上)非常有效。
这在 GoDaddy 环境中运行良好。
DOES NOT 在 HostPapa 环境中运行。好像没有看到'event'参数,isset()没有返回true。
我完全困惑,甚至不知道该说什么或寻求 HostPapa 支持(如果有的话)。
有人知道这可能是什么原因吗?
是否有某种我应该查看的设置?
我真的非常感谢一些帮助。请。
更新:我只在传递数组时遇到这个问题。当我不使用数组时,它可以工作!
更新 #2: @Phil 提出了一个 LimitRequestLine 问题,我将其传递给 HostPapa 支持 (3X),但他们一直忽略它。我终于为他们创建了 2 个测试页面来模拟我的应用程序之外的问题。根目录中带有一个按钮的测试页面,单击该按钮会在根目录/php/ 中打开带有数组参数的第二页,这表明 $_GET 不起作用。
HostPapa 支持也忽略了这一点。
HostPapa 支持给我阅读的最终电子邮件(除其他外):
“您似乎使用了错误的代码,因此请求您 彻底检查文件中存在的代码。”
然后关闭我的票。
在创建 2 个支持测试页面的过程中,我了解到:
- 当第二个测试页面位于 php/ 目录中以模仿我的应用程序时,$_GET 不起作用。
- 如果我将两个页面都放入根目录,因此将包括查询字符串在内的 URL 缩短 4 个字符,$_GET 工作就可以了。
不幸的是,在这种特殊情况下,解决方案是将我的托管服务提供商更改为实际提供支持的人。作为一家小型企业,我无法承受这些冗长的停机时间,这会花费我很多钱,而且当我的应用程序无法运行时,我的客户也不会对它产生信心。
非常感谢您感谢 @Phil 的帮助!
【问题讨论】:
-
什么是 var_dump($_GET);当您将任何内容作为获取请求传递时返回?
-
我认为问题出在他们的 php 设置中......询问他们或检查您是否可以从控制面板更改 php.ini
-
@KyleThomas 在这种特殊情况下 var_dump($_GET);返回:数组(0){}
-
@mohade 是的,我的目录中有一个 php.ini 文件。它当前仅包含一个时区条目。我相信此文件中的设置会覆盖提供商为站点设置的常规设置。什么设置会导致这种行为?
-
包含查询参数的请求URL多长?您可能会遇到修改后的
LimitRequestLine指令(假设为 Apache)