【发布时间】: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 搜索以获取更多信息,但我已经没有选项了。
【问题讨论】: