“访问被拒绝代码 5” PHP 重命名 Symfony2/doctrine2 中的错误


"Access Denied Code 5" PHP Rename Error in Symfony2/Doctrine2

使用用户实体登录时,我的 Symfony2 项目中出现了臭名昭著的学说"PHP 重命名访问拒绝代码 5"错误:

''app''cache''dev/doctrine/orm/Proxies''__CG__AcmeDemoBundleEntityUser.php): Access is denied. (code: 5)

我会登录正常,如果幸运的话,我可以在会话被杀死之前加载一个页面,因为用户身份验证由于此错误而失败。 它只发生在这一个实体上。

我的同事,具有相同的设置和相同的项目,具有相同的错误,但对于不同的实体(并且仅该实体)。

这个问题之前已经在这里报告过,并链接到Doctrine的GitHub上的错误,该错误已确认从2.5开始修复(在Doctrine ORM 2.5发行说明中确认)。

我的Symfony2项目正在运行Doctrine ORM 2.5.4,但我仍然遇到同样的错误。

尝试的修复

  • 重新安装 XAMPP;
  • 删除项目并从 git 中提取项目;
  • 更新的供应商项目(也许保留了一个旧的 Doctrine ORM 包);
  • 关闭 PHPStorm(也许它正在锁定文件以进行索引);
  • 禁用了 Windows 索引(原因与上述相同)。

在 config_dev.yml 中将auto_generate_proxy_classes的值从 %kernel.debug% 更改为 false 可以防止问题,但这会隐藏问题而不是修复它。

有没有人设法真正解决这个问题?

您是否尝试过为 AbstractProxyFactory::

AUTOGENERATE_EVAL 或 AbstractProxyFactory::AUTOGENERATE_FILE_NOT_EXISTS 设置auto_generate_proxy_classes的基础常量值。

根据本文档部分 高级配置>自动生成代理类 这应该可以解决开发环境中的访问被拒绝问题。

此外,还应确保生产配置遵循以下建议:

在生产环境中,强烈建议使用AUTOGENERATE_NEVER以获得最佳性能。其他选项在开发环境中很有趣。