2011-02-27 67 views
0

当我创建包含在LAMP环境中的以下代码的文件test.class.php:问题执行一类使用PHP CLI

<?php 

class MyClass 
{ 
    public var $variable; 
}; 

$obj = new MyClass(); 

?> 

当我运行:

php myclass.php 

从命令行,我得到的错误:

Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /path/html/_dev/classes/test.class.php on line 5

如果我通过浏览器访问相同的文件,我没有得到任何错误。关于可能发生什么的任何建议?

回答

0

想通了。 PHP命令在我的环境中默认的PHP CLI版本是PHP 4.4.8。

我的主机还有一个PHP5命令设置为使用PHP 5.2.14。当我执行命令

PHP5 myclass.php 

一切工作正常。但是,我发布的代码最初产生了另一个错误。

public var $variable 

行,这是另一个堆栈溢出后的解决方案无法正常工作。我将其替换为

public $variable 

并且能够用该更改成功地进行测试。

此链接帮助了很多 http://www.yiiframework.com/forum/index.php?/topic/4319-error-on-yiibase-php-on-line-55/

0

请确保您正在运行php5的CLI:

$ php -v 
PHP 5.3.3 (cli) (built: Aug 22 2010 19:41:55) 
Copyright (c) 1997-2010 The PHP Group 
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies 

您可以检查自己使用,或者它位于通过该命令的PHP版本:which php

而正如其他人说,摆脱这个var。但它似乎不是问题。该错误报告称private是未知令牌。

祝你好运!

+0

感谢贡萨洛。另外,我发现我的主机有可用的PHP5命令,它可以工作。 – moluv00 2011-02-28 02:56:41

0

摆脱var关键字,这是没有必要的。

<?php 

class MyClass 
{ 
    public $variable; 
}; 

$obj = new MyClass(); 

?> 
4

您不需要var关键字;你应该使用:

public $variable; 

这是正确的PHP 5语法。


var是PHP 4的reliquate,与你已经使用:

var $variable; 

但在PHP 4没有public关键字 - 和public(PHP 5)var(PHP 4)不能一起使用。


欲了解更多信息有关publicvar,和其他同类关键词,看到这个页面中的PHP手册:Visibility


至于为什么你的代码不显示任何错误,当您的网络服务器运行...也许配置的差异,导致错误不显示,在一个案例中?

注意:CLI和PHP/Apache可以使用不同的配置文件 - 而且通常也可以。



一点题外话(它不会造成问题),你不需要分号在类的定义的结尾:你的代码应该是这样的:

class MyClass 
{ 
    public $variable; 
} 

$obj = new MyClass(); 
0

public var $variable;是太多了。只需使用这些关键字之一。