Amazon web services Zend framework ACL第一次切换服务器失败

Amazon web services Zend framework ACL第一次切换服务器失败,amazon-web-services,zend-framework,redis,zend-acl,Amazon Web Services,Zend Framework,Redis,Zend Acl,嗨,伙计们! 我不是英语母语,如果你能纠正我的句子,我将不胜感激 为了解释我的问题,这里是我们的开发环境 语言:PHP7.3.11 框架:Zend框架v3.3.11 服务器:aws ec2×4 服务器操作系统:Amazonlinux 2 redis已启用,有两个项目,如a-project/ec2×2(a-ec2)b-project/ec2×2(b-ec2) a-ec2和b-ec2之间的唯一区别是源代码,其他设置,如nginx、php-fpm、redis和DB设置都是相同的 如果我缺少一些信息

嗨,伙计们! 我不是英语母语,如果你能纠正我的句子,我将不胜感激

为了解释我的问题,这里是我们的开发环境

  • 语言:PHP7.3.11
  • 框架:Zend框架v3.3.11
  • 服务器:aws ec2×4
  • 服务器操作系统:Amazonlinux 2
  • redis已启用,有两个项目,如a-project/ec2×2(a-ec2)b-project/ec2×2(b-ec2)
  • a-ec2和b-ec2之间的唯一区别是源代码,其他设置,如nginx、php-fpm、redis和DB设置都是相同的
如果我缺少一些信息,请告诉我

当我们联合这些项目时,问题就发生了

登录我们的服务后,zend工作异常。 登录操作在a-ec2上,我们可以使用它成功登录。 我们将会话信息保存在redis上,它可以正常工作。 但这只是我们第一次将服务器从a-ec2切换到b-ec2,出现了zend acl错误。 我们使用isAllowed函数来检查用户是否有足够的权限访问特定的服务。 位于第827行/library/ZendAcl.php的isAllowd函数第一次返回false。 然后,我们重新加载页面,isAllowed函数返回true,这样我们就可以访问服务了。 具体地说,第1161行的&_getRules函数出现了一些问题,该函数用于_getRuleType函数。 在这些过程中,不知何故其中一个数组包含“TYPE_DENY”。 但当尝试重新加载(ctrl+f5)时,该值将变为“TYPE_ALLOW”

这怎么会发生? 如何解决这个问题

我们正试图在两周或更长的时间内解决这个问题。。。 提前谢谢

[更新] 我们发现这个方法在下面写的不好用,所以我们不能正确地获得$auth

$auth返回“”

[更新2]

我们可能会解决这个问题,所以我留下我们的解决方案

我们使用

Zend_Auth::getInstance()->getStorage()->read()
从会话获取$auth

但是第一次,保存在a-ec2上的会话信息在b-ec2上无法读取。 所以,我们决定在redis中使用会话信息,所以我们改变了方法以获得$auth-like

        require_once 'Zend/Session.php';
        Zend_Session::start();
        self::$_auth = $auth = Common_Model_Redis::get();
在连接到redis服务器之前启动会话,并从中获取会话信息!
我希望这对你也有用

从Php7.2开始,如果使用原始的最新可用版本,许多ZF1功能将中断。您使用的是哪个ZF1版本?服务器a-ec2上的哪个PHP版本?感谢您的回复!我们正在使用PHP7.3.11和zend engine v3.3.11!我把这个信息添加到帖子里了!
        require_once 'Zend/Session.php';
        Zend_Session::start();
        self::$_auth = $auth = Common_Model_Redis::get();