PHP 5.3.2-1ubuntu4.2 中不支持闭包
我刚刚意识到一些 PHP 代码在一台服务器上无法正确执行,但在另一台服务器上却可以正确执行。
他们都运行 Ubuntu 10.04 和 PHP PHP 5.3.2 (PHP 5.3.2-1ubuntu4.2 with Suhosin-Patch (cli) (built: May 13 2010 20:03:45))
我正在测试使用
$f = function() {};
var_dump($f);
die();
:服务器工作正常,结果是:
对象(闭包)#1 (0) { }
对于没有的,结果是:
未知:0
我错过了什么?
[编辑]
在同一个文件中有两个闭包似乎存在问题:
<?php
$f = function() {};
$f2 = function() {};
var_dump($f);
var_dump($f2);
die();
输出:
未知:0
对象(闭包)#1 (0) {}
I just realised that a bit of PHP doesn't execute correctly on one server, but it does on another.
They're both running Ubuntu 10.04 with PHP PHP 5.3.2 (PHP 5.3.2-1ubuntu4.2 with Suhosin-Patch (cli) (built: May 13 2010 20:03:45))
I'm testing using:
$f = function() {};
var_dump($f);
die();
On the server that works, the result is:
object(Closure)#1 (0) { }
On the one that doesn't, the result is:
UNKNOWN:0
What am I missing?
[edit]
There seems to be an issue with having 2 closures in the same file:
<?php
$f = function() {};
$f2 = function() {};
var_dump($f);
var_dump($f2);
die();
Outputs:
UNKNOWN:0
object(Closure)#1 (0) {}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
经过更多谷歌搜索并结合 ircmaxell 在 phpinfo 上的提示,我得到了 eaccelerator 的提示。
正确运行代码的服务器运行的是 eaccelerator 0.9.6.1,无法运行的服务器使用的是 0.9.6。
从源代码编译了新版本,它解决了我的问题。
谢谢!
After some more Googling combined with ircmaxell's tip at phpinfo, I got a hint at eaccelerator.
The server that ran the code correctly was running eaccelerator 0.9.6.1, the one that didn't work was using 0.9.6.
Compiled the new version from source and it fixed my issue.
Thanks!