【问题标题】:PHP odd parse errorsPHP奇怪的解析错误
【发布时间】:2017-11-20 01:26:25
【问题描述】:

所以我现在要拔头发了:/

我在 Windows Server 2012 R2 Datacenter Edition 上使用 PHP 7.1.11 设置了一个 IIS 网络服务器,当我加载一个页面时它会引发解析错误:

Parse error: syntax error, unexpected '[' in functions.php on line 138

现在出错的实际代码如下

$hash = password_hash($nieuwWachtwoord,PASSWORD_DEFAULT, ["cost" => 13]);

当我把它改成

$hash = password_hash($nieuwWachtwoord,PASSWORD_DEFAULT,array("cost" => 13));

它执行代码没有任何问题。

但是当我调用另一个运行以下代码的函数时

 Database::fetch_assoc("SQL-STRING", array($id))[0]['cdate'];

它还会引发解析错误。令人沮丧的是,这不应该发生,因为在 php7.1 中应该可以在旅途中声明这样的数组(并且在运行 ubuntu 和 apache2 的 Linux 机器上的相同代码可以正常工作)

我“假设”返回数组的最后一种情况最多应该抛出未定义的索引错误而不是解析错误。

有人知道是什么原因吗?

提前致谢!

【问题讨论】:

  • 您有多确定这是在运行 PHP 7?您已经通过phpinfo() 确认了这一点? Database::fetch_assoc 代码的解析错误消息是什么?
  • 我有,它运行 PHP 7.1.11 x64。这也是我检查的第一件事,因为我认为这是 php 5.3 的东西。 Database::fetch_assoc 代码的解析错误完全相同。
  • 不过,我很好奇您如何检查的。服务器上可能有多个版本的 PHP。如果将password_hash() 行替换为phpinfo(),输出显示PHP 7?有问题的行之前/之后的那几行是什么意思?
  • 尝试在 php 5.6 上运行
  • 嗯,这是一个很好的观点。我在显示为 7.1.11 的网站 (test.php) 的根目录中检查了它。但是当我在实际加载functions.php文件的脚本中尝试它时。它高兴地告诉我我正在运行 PHP 5.3 :/ 。非常感谢这个建议。现在对于新的奇怪的事情,为什么当我进入更深的目录时我的 PHP 版本切换到 5.3(test.php 在根目录中)functions.php 是 1 个文件夹更深..

标签: php php-7.1


【解决方案1】:

好的,感谢 ceejayoz 我发现了问题。 当我将 phpinfo() 放在一个名为 test.php 的文件中时,它告诉我我正在运行 PHP 7.1。

现在实际调用引发解析错误的脚本的文件具有 .html 扩展名。并且 IIS 对指向旧的 5.3 可执行文件的 html 文件有不同的处理程序映射。

现在我更改了 .html 文件的处理程序,它再次像魅力一样工作!

非常感谢!

【讨论】:

  • 很高兴能帮上忙。 :-)
猜你喜欢
  • 1970-01-01
  • 2015-05-23
  • 1970-01-01
  • 2015-08-16
  • 2011-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多