Maison >développement back-end >tutoriel php >php5.4.0的一些小问题
晚上刚刚更新了php5.4.0,环境是Windows7 + Apache2.2 + MySQL5.1 + PHP5.4.0,php.ini没有重新更新,仍然采用之前的版本(php5.2)
如题,有两个小问题:
1,php5.4.0的命名空间空间问题:
<?phpnamespace Foo;class test{/*hello php 5.4.0*/}?>
$phpinfo = function (){ echo 'hello world!'; } phpinfo(); $phpinfo();
还有一个问题。
PHP Warning: PHP Startup: Invalid library (maybe not a PHP library) 'libmcrypt.dll' in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library '../PHP/ext\php_iconv.dll' - 中包含无效路径
in Unknown on line 0
这个怎么解决?在UE中调用php.exe调试输出的,但是正常使用没有问题。。。。很郁闷的,DOS为什么会报错。。。。
(注:我自己配置的移动配置,之前有报错,把libmcrypt.dll和php_iconv.dll放到/Windows目录下可用,现在却又报错了,郁闷。。。。)
1.错误提示的很清楚了,估计是你的程序存有BOM头。 2.这是给$phpinfo赋值,所以要在行末加上分号来正确关闭。
3.错误提示给你的路径你看看对不对
第一个应该是bom头的问题
第二个只是定义了$phpinfo是一个匿名函数,和phpinfo()没有半毛钱关系,并没有覆盖掉phpinfo(),后面加上';' 就正常了
新特性支持以下语法:
//Short array syntax$a=[1,2,3,4,5,6];//Array dereferencingfunction foo(){ return array(1,2,3,4);}echo foo()[1];
确认问题一:确实是UTF-8的BOM头问题,已解决:
UE保存时采用格式为UTF-8 无BOM,搞定!
延伸问题二:后面引号去除可以正确调用,但是为啥引号不添加却不会报错??
我也碰到了问题一,不过我的是因为首行写了 `#! /bin/env php`
语言的变更很难三言两语讲完的,你最好查文档。
以下是我查的关于php从5.3到5.4的变更
http://www.php.net/manual/zh/migration54.php