1

我将 MAMP 与 PHP 5.4.10 一起使用,但以下 MWE 存在问题:

<?php
trait T {
    public function hello() { echo 'hello'; }
}
class A {
    use T;
}
$a = new A();
$a->hello();
?>

该页面在第一次加载时显示“你好”。但是,当我点击刷新时,我得到一个错误 500。

如果我修改文件(例如,只需在某处添加一个空行)并再次刷新,“你好”再次出现。再次点击刷新,错误 500 又回来了。

任何线索这可能来自哪里?

更新:

这显示在 PHP 错误日志中(Apache 错误日志中没有任何内容):PHP Fatal error: Call to undefined method A::0? ()

0当我重复操作时,并不总是具有相同的名称)。

4

2 回答 2

1

Xcache 可能是这里的问题,尝试关闭缓存(或至少 xcache)并再试一次

于 2013-05-31T15:12:36.957 回答
0

我遇到了同样的问题,感谢@Leon Weemen,我专注于 XCache。我发现这个错误(在 XCache 3.0.1 中已修复)正是导致问题的原因(我的 XCache 版本是 2.0.0)。他们建议您在 php.ini 中设置以下值来解决问题;

xcache.mmap_path = "/tmp/xcache"
xcache.readonly_protection = on

但是,这种解决方法并不能解决我的问题。我能够禁用 XCache 的唯一方法是使用ini_set()PHP 方法。我的应用程序一开始的以下代码片段解决了这个问题,并且一旦更新就可以使用 XCache:

try{
    $xCache = new ReflectionExtension('xcache');
    if(version_compare($xCache->getVersion(), '3.0.1', '<')){
        ini_set('xcache.cacher', 0);
    }
} catch(ReflectionException $e){
    // xCache not installed - everything should work fine
}
于 2013-09-04T12:26:55.637 回答