动态PHP对象访问在本地和服务器上有所不同

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了动态PHP对象访问在本地和服务器上有所不同相关的知识,希望对你有一定的参考价值。

在本地XAMPP开发环境中,我可以通过调用:$xmltemplates->$_POST['xmlmap']->sheet;来访问php中的对象属性

但是在实时服务器上,我必须将POST变量放入一个字符串中,以便它可以工作:

$gehmiraufdiekeks = $_POST['xmlmap']; $xmltemplates->$gehmiraufdiekeks->sheet;

我是否需要修复代码或者是服务器配置问题?

更新:我期望XAMPP测试环境至少是7个。所以我只检查了服务器的PHP版本,即7个。但是当我加倍检查两个PHP信息时,我的本地PHP版本是5.6。 D'哦!所以有这种问题的人:请将您的代码更新为PHP 7.;)

答案

两件事情:

  1. 配置(或应该)生产服务器以隐藏错误消息。这就是你没有得到的原因。您需要检查服务器日志或启用完整错误报告。
  2. 我理解你指的是在不使用花括号的情况下调用变量属性,如: $key = 'bar'; var_dump($foo->$bar); ... 而不是: var_dump($foo->$bar); 这在PHP / 7.0迁移指南(强调我的)的Changes to the handling of indirect variables, properties, and methods部分中进行了解释: 现在,将严格按照从左到右的顺序对间接访问变量,属性和方法进行评估,而不是之前的特殊情况组合。 [...] 必须重写使用旧的从右到左评估顺序的代码,以明确使用带花括号的评估顺序(请参阅上面的中间列)。这将使代码向前兼容PHP 7.x并向后兼容PHP 5.x.
另一答案

实际上,这是与PHP版本相关的。他们在PHP 7中对此进行了更改,因此没有人可以通过POST表单发送失败的非转义字符串来破坏您的脚本。

以上是关于动态PHP对象访问在本地和服务器上有所不同的主要内容,如果未能解决你的问题,请参考以下文章

在本地服务器上隐藏 PHP 源代码 [关闭]

php 获取服务器计算机名和服务器域名

javascript对象

如何在服务器上保持本地时间(使用 JS 和 PHP)?

本地主机上的 php 错误:访问被禁止!错误 403

支持动态或静态片段的不同屏幕尺寸?