解析错误意外":"在localhost中正常工作

时间:2015-10-16 20:24:15

标签: php

我有一个PHP应用程序,由我自己和我们中的一些人完成。我编码不多,但它在localhost中运行良好。当我尝试在我们的大学网络服务器上传它时,我遇到了这个错误。

  

解析错误意外:

这发生在这条线上。所以我认为PHP也必须对前一行做一些事情。所以我要添加上一行和下一行:

<?php
  session_start();
  $page = $_GET["page"] ?: "index"; // Error in this line!

有趣的是,这可以在我的本地WAMP服务器上运行,但它在大学服务器中不起作用。代码有问题吗?

4 个答案:

答案 0 :(得分:3)

我相信您的大学Web服务器中的PHP已经过时或超过 5.3 。这是一个速记三元运算符,受PHP 5.3及更高版本支持。

解决方法

$page = $_GET["page"] ? $_GET["page"] : "index";

更新:要删除未设置$_GET["page"]的警告,您可以使用:

$page = isset($_GET["page"]) ? $_GET["page"] : "index"; // Checks if $_GET["page"] exists, and then assigns it.

PHP 7允许使用这种简短的语法:

$page = $_GET["page"] ?? "index";

来自文档:

  

从PHP 5.3开始,可以省略三元运算符的中间部分。表达式expr1?:expr3如果expr1的计算结果为TRUE则返回expr1,否则返回expr3。

答案 1 :(得分:0)

PHP Docs

引用
  

从PHP 5.3开始,可以省略三元运算符的中间部分。表达式expr1?:expr3如果expr1的计算结果为TRUE则返回expr1,否则返回expr3。

我建议你的大学应该将他们的服务器更新为支持的PHP版本

答案 2 :(得分:0)

问题可能是PHP的版本。

也许您的本地PHP版本高于大学服务器。

您必须查看PHP ?:的哪个版本

答案 3 :(得分:-2)

如果语法在您的服务器上不起作用,则可能是&#34;短标签&#34;在您的PHP ini文件中被禁用。