【问题标题】:$_GET contains unknown/unwanted index on every request$_GET 在每个请求中都包含未知/不需要的索引
【发布时间】:2015-10-07 06:14:35
【问题描述】:

这是我以前从未遇到过的一个奇怪的问题。我正在处理的一个 Laravel 4 站点最近部署到运行 IIS/PHP 5.5.11 的生产服务器上。在我开始发布表格之前,一切似乎都很棒。我开始收到如下错误:

Next exception 'Illuminate\Database\QueryException' with message 'SQLSTATE[42S22]: Column not found: 1054 Unknown column '/admin/settings/1' in 'field list' (SQL: update `settings` set `updated_at` = 2015-07-17 08:40:41, `/admin/settings/1` =  where `id` = 1)' in C:\{application_directory}\vendor\laravel\framework\src\Illuminate\Database\Connection.php:625

经过一番挖掘,我发现 PHP $_GET 超全局变量包含路径,作为索引,在我的应用程序中的每个页面请求上。例如,我转储了我的设置管理页面的索引视图并收到:

Array
(
    [/admin/settings] => 
)

自然地,当我在所有表单帖子上使用 Laravel 的 Input::all() 时,它结合了 $_GET/$_POST 变量,因此当它尝试运行更新查询时,额外的索引(没有值)是正在通过。

有什么想法吗?我已经检查了 IIS 的重写模块 PHP 设置,执行了一堆 Google 搜索以获取更多信息,但我已经没有选项了。

【问题讨论】:

    标签: php laravel laravel-4


    【解决方案1】:

    我想简单地提出问题的性质有助于将我的思绪转向正确的方向。无论如何,这个问题的答案在于 IIS 的 web.config 中的 URL 重写设置。原来一般的重写规则设置输入如下:

    <action type="Rewrite" url="/index.php?/{R:1}" appendQueryString="false" />
    

    我正在查看所有的重写规则(我的开发/测试服务器都使用 Apache 和 mod_rewrite,所以这对我来说是不同的)。最后,我在这里发现了这个关于setting up laravel on IIS7的超级有用的问题@

    将他们的设置与这个设置进行比较,我注意到上面提到的行中存在差异,即?。对我来说,很明显,url 重写导致了这个特定索引的注入。

    无论如何,谢谢你的共鸣板!

    【讨论】:

      猜你喜欢
      • 2012-11-01
      • 1970-01-01
      • 2013-02-19
      • 2020-12-20
      • 1970-01-01
      • 1970-01-01
      • 2017-10-16
      • 2020-01-22
      • 1970-01-01
      相关资源
      最近更新 更多