【问题标题】:Error using _redirect function on ubuntu在 ubuntu 上使用 _redirect 函数时出错
【发布时间】:2013-01-23 22:06:03
【问题描述】:

我正在 Zend Framework 中开发一个系统,为了安全起见,我使用 Zend_Auth 实现了用户/角色身份验证,它可以接收用户/密码信息并返回带有每个用户角色的模型用户。

在我的全局布局中,我有一个重定向到主页some/path/default/index/index 的大横幅,然后在 IndexController 中,我重定向到取决于其角色的用户主页。当我在 Windows 上工作时,我没有任何问题。但是当我在我的 Ubuntu 中工作时,Zend Framework 的 _redirect 函数会抛出一个 Doctrine's Exception

Uncaught exception 'Doctrine_Connection_Pgsql_Exception' with message 'SQLSTATE[22P02]: Invalid text representation: 7 ERROR: invalid input syntax for integer: ""

但错误始于 Zend Broker。

我在前端控制器中使用插件来了解用户是否可以或不能访问某些页面。我该如何解决这个错误?

这是我的堆栈跟踪:

Fatal error: Uncaught exception 'Doctrine_Connection_Pgsql_Exception' with message 'SQLSTATE[22P02]: Invalid text representation: 7 ERROR: invalid input syntax for integer: ""' in /home/project/library/Doctrine/Doctrine/Connection.php:1082 Stack trace: #0 /home/project/library/Doctrine/Doctrine/Connection/Statement.php(269): Doctrine_Connection->rethrowException(Object(PDOException), Object(Doctrine_Connection_Statement)) #1 /home/project/library/Doctrine/Doctrine/Connection.php(1006): Doctrine_Connection_Statement->execute(Array) #2 /home/project/library/Doctrine/Doctrine/Query/Abstract.php(976): Doctrine_Connection->execute('SELECT u.usuari...', Array) #3 /home/project/library/Doctrine/Doctrine/Query/Abstract.php(1026): Doctrine_Query_Abstract->_execute(Array) #4 /home/project/library/Zend/Controller/Plugin/Broker.php on line 336

提前致谢

【问题讨论】:

  • 这似乎不太可能与重定向功能本身有关。堆栈跟踪向您展示了什么?
  • 我更新了我的帖子以添加您想要的堆栈跟踪
  • 好吧,我可以告诉你,实际的错误来自你的一个控制器插件中的postDispatch 方法——你有任何插件与 DB 或 Doctrine 一起工作吗?可能是您的 ACL 检查?
  • 我有一个控制身份验证的插件。如果用户具有身份,则重定向到其主页,否则将登录。但我认为问题可能是我创建的 View Helper 获取登录用户的名称。

标签: zend-framework ubuntu-12.04 doctrine-1.2 zend-auth


【解决方案1】:

从技术上讲,大多数助手(尤其是这个助手)在任何平台上都以相同的方式工作。为了帮助您找出问题所在,我有两个建议。

确保您在两个系统上处于相同的环境中。如果其中一个是 APPLICATION_ENV“开发人员”,而另一个是“生产”,这可能会导致不同系统上的不同行为。

另一件事是确保您设置了您认为设置它的环境。一些教程提倡通过 SetEnv APPLICATION_ENV 开发人员(例如)在 .htaccess 文件中设置环境,因此您在 public/index.php 中设置的任何内容都可能根本没有设置。

另一个想法是包含路径可能在两个系统上预设(在 public/index.php 之前)不同。

希望这对这个过程有所帮助:)

【讨论】:

  • 感谢您的回答。我检查了您发现的前两个建议,它们都可以。也许第三个可能是问题,今晚我会去看看。
猜你喜欢
  • 2011-10-06
  • 2013-04-16
  • 1970-01-01
  • 2013-11-16
  • 1970-01-01
  • 2019-04-17
  • 2017-10-20
  • 2017-10-20
  • 1970-01-01
相关资源
最近更新 更多