PHP 5.3.2-1ubuntu4.2 中不支持闭包

发布于 2024-09-13 03:41:15 字数 642 浏览 1 评论 0原文

我刚刚意识到一些 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

慈悲佛祖 2024-09-20 03:41:15

经过更多谷歌搜索并结合 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!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文