我的客户说他在使用我的脚本时遇到了这个错误:
Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /path/to//header.php on line 34
Parse error: syntax error, unexpected T_STRING, expecting T_CONSTANT_ENCAPSED_STRING or '(' in/path/to/header.php on line 34
header.php
中的第34行就是use \Main\Class;
现在,我告诉他他必须有PHP >= 5.3.0
,他说他的PHP版本是5.3.24
有什么问题吗?
编辑:之前和之后的线条
30. // Define absolute path
31. define("ABSPATH", $abs_path);
32. $_SESSION["abs_path"] = ABSPATH;
33.
34. use \CNS\main\CNS;
35. $cns = new CNS();
编辑2:
他给我发了这个
Program Version
Apache: 2.2.24
CentOS: CentOS release 6.4 (Final)
cPanel: 11.36.1 (build 8)
Curl: 7.12.1
MySQL 5.5.30
phpMyAdmin 3.5.5
Python: 2.6.6
Program Version
Perl: 5.8.8
**PHP: 5.3.24**
ionCube Loader: 4.2.2
Zend Optimizer: 3.3.9
Ruby: 1.8.7
Rails: 3.2.8
OpenSSL: 1.0.0-fips
8条答案
按热度按时间yfwxisqw1#
如果你没有安装PHP 5.3却尝试使用名称空间,就会发生这种情况。PHP 5.2及以下版本不支持名称空间,当它们看到反斜杠时会抛出此错误。
--编辑:版本混淆了。如果我没弄错的话,5.2及以下版本没有名称空间。
brc7rcf02#
现在,我告诉他他必须有PHP〉= 5.3.0,他说他的PHP版本是5.3.24
有什么问题吗?
他的PHP版本实际上〈5.3.0,不管他是否知道。
See the error occurring on many PHP versions .
ffscu2ro3#
如果你得到'unexpected T_STRING'错误后,你提到的错误,你需要安装PHP 5.4+
y1aodyip4#
让他用
phpinfo()
创建一个文件。他可能没有PHP版本〉=5.3.0。57hvy0tb5#
在.htaccess中
jdgnovmf6#
我运行了同样的问题,做了一些研究,我设法解决了它。在我的情况下,我使用PHP7,我必须做的是编辑位于
~/.composer/vendor/laravel/installer/
的文件laravel,其中shebang行是#!/usr/bin/env php
,我更改为#!/usr/bin/env php7
再次运行工匠后,我得到了它的工作:
rfbsl7qr7#
正如其他用户所说:命名空间的使用只对5.3.0以上的PHP版本有效,所以我的解决方案是能够包含一个使用命名空间的库的可选使用,这是检查php版本并使用**eval()**函数来避免较低版本的PHP出错,即使在编译时也是如此。
大概是这样的
xxslljrj8#
在我的例子中,我用Virtualbox运行Vagrant,Oracle的sendfile系统调用有一个已知的bug,如果文件在共享文件夹上,它会导致文件只被部分读取。可能的修复包括添加到nginx配置
但这并不总是有帮助,在我最近的例子中,只是编辑文件(添加注解或空格),再次保存,最后重新启动php-fpm就有帮助了。