【问题标题】:Very simple PHP code crashes Apache非常简单的 PHP 代码使 Apache 崩溃
【发布时间】:2013-01-25 18:49:31
【问题描述】:

我在 Windows XP 和 Apache 2.2.21 上使用 Wampserver。

此代码在执行时崩溃:

<?php

class Tax {
    public static function load($id)
    {
        echo $id;
    }
}

$tax = Tax::load(1);

?>

此代码在执行时不会崩溃:

<?php

class Tax {
    public static function load($id)
    {
        echo $id;
    }
}

$tax = Tax::load(10);

?>

简单来说,如果我将单个数字传递给函数 load,Apache 就会崩溃。但是,如果我将函数名称更改为 load 以外的任何其他内容,它就可以正常工作。另外,我知道该函数不会返回任何内容,但它至少应该仍然可以编译。

这段代码也可以:

Tax::load(5);

我现在有点迷茫,因为我不知道为什么这段代码会导致崩溃。请帮帮我。

编辑

我使用的是 PHP 5.3.10

Apache 错误日志中没有错误

将变量名 $tax 更改为其他任何东西(例如 $a)都可以。我更加困惑了。

我知道 apache 崩溃是因为我收到了一个 Windows 错误。 Apache 服务器会自动重启,并在崩溃后一分钟左右恢复。

【问题讨论】:

  • 有点离谱,但 php 不是编译语言,而是解释语言
  • 你为什么使用echo?你应该使用return。另外,您在 Apache/PHP 日志中有什么内容吗?
  • 您能解释一下“崩溃”的含义吗?您收到任何错误吗?
  • I'm aware the function does not return anything 他知道这一点。鲶鱼,这无关紧要,他的意思可能是“解析好”。
  • 附言。告诉大家你正在运行的 PHP 女巫版本...

标签: php apache


【解决方案1】:

如果 Apache 真的崩溃了,那么您应该查看以下文件以了解发生了什么:

[WAMP directory]/apache/logs/error.log

【讨论】:

    【解决方案2】:

    尝试更改 $tax(变量)的名称。

    【讨论】:

      【解决方案3】:

      仅仅因为它回显并且不返回不应该使 apache 崩溃。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多