我有一个PHP应用程序,由我自己和我们中的一些人完成。我编码不多,但它在localhost
中运行良好。当我尝试在我们的大学网络服务器上传它时,我遇到了这个错误。
解析错误意外
:
这发生在这条线上。所以我认为PHP也必须对前一行做一些事情。所以我要添加上一行和下一行:
<?php
session_start();
$page = $_GET["page"] ?: "index"; // Error in this line!
有趣的是,这可以在我的本地WAMP服务器上运行,但它在大学服务器中不起作用。代码有问题吗?
答案 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 5.3开始,可以省略三元运算符的中间部分。表达式expr1?:expr3如果expr1的计算结果为TRUE则返回expr1,否则返回expr3。
我建议你的大学应该将他们的服务器更新为支持的PHP版本
答案 2 :(得分:0)
问题可能是PHP的版本。
也许您的本地PHP版本高于大学服务器。
您必须查看PHP ?:
的哪个版本
答案 3 :(得分:-2)
如果语法在您的服务器上不起作用,则可能是&#34;短标签&#34;在您的PHP ini文件中被禁用。