【问题标题】:codeigniter fatal error Call to a member function cookie() on a non-objectcodeigniter 致命错误 调用非对象上的成员函数 cookie()
【发布时间】:2012-01-23 11:25:38
【问题描述】:

我有 Codeigniter v202 和 php 版本 5.2.17 我的网站在我的本地运行良好,但在服务器中,我不断在每个页面中收到此错误消息,错误日志中的消息是:

PHP 致命错误:在第 138 行的 /path/to/libraries/Session.php 中的非对象上调用成员函数 cookie()

在页面中我有

遇到了 PHP 错误

严重性:通知

消息:未定义的属性:MY_CONTROLLER_NAME::$input

文件名:libraries/Session.php

行号:138

这是第 138 行:

$session = $this->CI->input->cookie($this->sess_cookie_name);

库是原始库,我没有对其进行任何更改。 请帮忙!

【问题讨论】:

  • 请提供您遇到的问题的相关代码,以便我们为您提供帮助。
  • 为什么是 $this->CI?你在哪里工作?一个普通的控制器?你打电话给父母 __construct() 吗?
  • 它是 CI 自己的会话库,所有控制器都出现同样的错误
  • 我认为您在阅读您发布的“未定义属性”错误时遇到了问题。您能否写出更多您正在使用的代码以及在哪里?您是在扩展库还是只是在控制器中调用它?
  • @DamienPirsy 我在任何控制器中都遇到了错误,甚至使用 CI 控制器回显“phpinfo()”的功能我收到了错误消息。我认为我的自动加载模型有问题,但我删除它们仍然是同样的问题。

标签: php codeigniter


【解决方案1】:

我发现了问题所在。 我有

setlocale(LC_ALL, 'tr_TR');

在我的 /index.php 中。 太奇怪了,但是 session 库没有初始化 core input。我花了很长时间才找到但是当我回显时

echo var_dump($this->CI);

有吗? (问号)而不是字符 I 然后是 ?nput。我的语言环境没有将字符 i 大写为 I,这就是问题所在。奇怪的是它在本地主机上工作但在服务器上没有工作。

【讨论】:

  • 我也有同样的问题。如果要将语言环境设置为 TR,则必须在控制器的构造函数中设置语言环境。公共函数 __construct() { parent::__construct(); setlocale(LC_ALL, 'tr_TR.UTF-8'); }
猜你喜欢
  • 1970-01-01
  • 2014-10-17
  • 2015-09-25
  • 1970-01-01
  • 1970-01-01
  • 2015-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多