【问题标题】:Can PHP Traits be disabled in 5.4.x?可以在 5.4.x 中禁用 PHP Traits 吗?
【发布时间】:2015-09-07 05:39:20
【问题描述】:

我有一个使用 Rackspace Cloud Sites 的客户,他们在他们的平台上宣传 PHP 5.4,但我通过他们的在线支持得知无法使用特征。

使用特征时,我收到 500 错误并且发现代码没有问题,我要求他们的在线支持人员告知“在我们的环境中不允许这样做”。使用下面的基本 PHP 示例代码会导致 500 内部服务器错误:

class Base {
    public function sayHello() {
        echo 'Hello ';
    }
}

trait SayWorld {
    public function sayHello() {
        parent::sayHello();
        echo 'World!';
    }
}

class MyHelloWorld extends Base {
    use SayWorld;
}

$o = new MyHelloWorld();
$o->sayHello();

是否有某些原因会禁用特征,或者甚至可以禁用它们? phpinfo() 报告的版本是5.4.10。

【问题讨论】:

  • 什么? ???这是我听过的最奇怪的事情。没有合理的理由禁用特征;这不像是一个安全关键功能。当您使用它时,不妨禁用类和接口。确定那个代表不是在背后说什么?
  • @deceze 他们也是我的想法,因此也是这个问题。代表说他们不知道为什么,并且回应来自运营团队。我希望其他拥有 rackspace 云站点托管的人可以复制这个问题,也许其他人可能有原因。
  • 这太疯狂了。我以前从未听说过这样的事情。如何禁用特定语言功能?

标签: php traits rackspace


【解决方案1】:

在与 rackspace 支持进行了一些讨论之后,似乎问题在于 xcache 和某些项目(例如特征)的执行。将以下行添加到 .htaccess 解决问题:

php_flag xcache.cacher 0

似乎不是机架空间问题,而是 xcache 问题。

【讨论】:

  • 你能问出什么问题吗?
  • 他们目前正在运行 XCache 2.0.1,我建议这是导致问题的the bug。已修复,但不在他们使用的版本中。
【解决方案2】:

无法禁用 PHP 特性。如果您对特征的使用有限,则可以注释掉“使用”语句。

【讨论】:

  • 更多的是我使用了使用特征的包,所以它不是修改代码的真正选项。有趣的是,它会一直运行良好,直到您调用通过 trait 实现的方法。
猜你喜欢
  • 2015-06-10
  • 2018-07-13
  • 1970-01-01
  • 2013-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-08
  • 1970-01-01
相关资源
最近更新 更多