静态方法在 PHP 中的 Web 服务器上不起作用
Posted
技术标签:
【中文标题】静态方法在 PHP 中的 Web 服务器上不起作用【英文标题】:Static Method Not Working on Web Server in PHP 【发布时间】:2013-12-26 14:23:03 【问题描述】:我刚刚在php
中完成了一个站点的工作,并决定将其上传到我的网络服务器,但是当我尝试使用静态方法调用运行页面时,我收到此错误Unexpected T_PAAMAYIM_NEKUDOTAYIM
。我知道这与双冒号错误有关,但我不明白为什么它在我的本地 Web 服务器上工作并拒绝在我的远程 Web 服务器上工作。
由于这个错误,我不得不通过我的整个站点将所有静态方法转换为实例方法
<?php
class User
private $userId;
public function __construct()
if(func_num_args() == 1)
$this->userId = func_get_arg(1);
public static function userNameExists($name)
global $dbc;
if(gettype($name) != "string")
die("Invalid Function Parameter");
$sql = "SELECT username FROM users WHERE users.username='$name'";
$result = mysqli_query($dbc, $sql) or die("Could Not Check Username at This Time: ".mysqli_error($dbc));
if(mysqli_num_rows($result) > 0)
return true;
else
return false;
?>
当我调用它时:
<?php
require("users.php");
if(User::userNameExists($_GET['username']))
header("Location:index.php");
?>
【问题讨论】:
你需要发布你的代码 代码在哪里?这个错误发生在哪一行?两种环境下的 PHP 版本是多少?)
字符在您的 if(User::...
行末尾丢失
global with oop 伤害了我 ;/
@EpicWebDesign 请不要修复人们问题中的语法错误——他们遇到的问题实际上可能是语法错误!
【参考方案1】:
您的代码末尾缺少,
<?php
class User
private $userId;
public function __construct()
if(func_num_args() == 1)
$this->userId = func_get_arg(1);
public static function userNameExists($name)
global $dbc;
if(gettype($name) != "string")
die("Invalid Function Parameter");
//Think about escaping user input
$name = mysqli_real_escape_string($name);
$sql = "SELECT username FROM users WHERE users.username='$name'";
$result = mysqli_query($dbc, $sql) or die("Could Not Check Username at This Time: ".mysqli_error($dbc));
if(mysqli_num_rows($result) > 0)
return true;
else
return false;
//This one
?>
您的 require 语句中还缺少 "
,
<?php
require("users.php");//This one
if(User::userNameExists($_GET['username']))
header("Location:index.php");
?>
【讨论】:
【参考方案2】:尝试检查您的网络服务器和本地计算机的PHP
版本。
你可以参考这个link。您可能有同样的问题和解决方案。
【讨论】:
【参考方案3】:如果完全相同的代码在本地运行,但在实时服务器上出现语法错误,则您可能使用了不同的 PHP 版本(可能是服务器上的旧 PHP4 版本)。
【讨论】:
【参考方案4】:您在
末尾缺少一个右括号if(用户::userNameExists($_GET['username'])
改为这样做
if(用户::userNameExists($_GET['username']))
【讨论】:
以上是关于静态方法在 PHP 中的 Web 服务器上不起作用的主要内容,如果未能解决你的问题,请参考以下文章
FCM 从 php 收到的通知在我的服务器上不起作用,从管理员那里工作
PHP 函数 mail() 在 AWS EC2 服务器上不起作用
PHP函数set_time_limit(0)在空间上不起作用