php die()运行两次?

ste*_*tef 1 php zend-framework

下面的代码段如何打印出"可读性不可读"?afaik a die()应该立即停止一切?

编辑:发布了完整的功能.这是一个功能Zend_Search_Lucene_Storage_File_Filesystem.我们总是得到"文件不可读"的错误.该文件似乎可读,但下面的代码段打印出"可读不可读"

编辑2:抱歉,在我发布的信息中犯了一些错误; 一切都正确了.

public function __construct($filename, $mode='r+b')
    {
        global $php_errormsg;

        if(strpos($mode, 'w') === false) {
            die('not readable');
        }
        else die('readable');

        if (strpos($mode, 'w') === false  &&  !is_readable($filename)) {
            // opening for reading non-readable file
            require_once 'Zend/Search/Lucene/Exception.php';
            throw new Zend_Search_Lucene_Exception('File \'' . $filename . '\' is not readable.');
        }

        $trackErrors = ini_get('track_errors');
        ini_set('track_errors', '1');

        $this->_fileHandle = @fopen($filename, $mode);

        if ($this->_fileHandle === false) {
            ini_set('track_errors', $trackErrors);
            require_once 'Zend/Search/Lucene/Exception.php';
            throw new Zend_Search_Lucene_Exception($php_errormsg);
        }

        ini_set('track_errors', $trackErrors);
    }
Run Code Online (Sandbox Code Playgroud)

Tim*_*tle 7

我要站出来说:

这是不可能的.

除非:你或者在析构函数/关闭函数echo之前的某个地方'ok' die().

从手册exit()可以看出die():

终止脚本的执行.即使exit()被调用,也将始终执行关闭函数和对象析构函数.

但是,代码本身发布的代码永远不会产生'okok'的输出.

排除故障:

  • 将回显的行更改为更可追溯的行.包括文件名(__file__)和行号(__line__)只是为了确保它确实是正在执行的同一行.
  • 添加调试器(类似于xdebug)以提供堆栈跟踪.函数以某种方式被调用两次(通过析构函数或关闭钩子)?