StackOverflowers 的同胞!
我遇到了奇怪的问题。让我写一个简短的描述:
这是我的文件夹层次结构
- \sys\core\core.php 声明命名空间 sys\core 和类名 core
- \sys\traits\singleton.php 声明命名空间 sys\traits 和特征名称单例
- \pub\index.php(没有声明的命名空间,包括自动加载功能,它负责休息 - 基于命名空间声明加载文件)
\sys\traits\singleton.php
trait singleton {
private static $_instance = false;
public static function get_instance() {
if( self::$_instance == false ) {
self::$_instance = new self();
}
return self::$_instance;
}
}
\sys\core\core.php
namespace sys\core;
class core {
use \sys\traits\singleton;
public function __construct() {
$ =; // just an example, it shall produce a nice parse error but it wont :(
}
}
在\pub\index.php我有
error_reporting(E_ALL);
// some constants defined
require('path/to/my/autoload/which/works/correctly.php');
use sys\core\core as core;
$core = core::get_instance();
$core->load_controller();
基本上,任何类型的错误 ( parse error / warning etc
) 都会显示,除非是在命名空间内引起的。因此,任何错误\pub\index.php
都会被正确报告(根据需要),但是在声明命名空间的文件中发生的每个错误都会导致白页,没有显示任何错误(尽管 error_reporting 被设置为E_ALL
可能的任何地方 - 即使在 php.ini 中)
我的配置信息:
PHP 5.5.0(来自 dotdeb.org 的包)通过 PHP-FPM 运行 nginx 1.4.1(来自 dotdeb.org 的包,nginx 的 error.log 也是空的,即使它正常保存任何类型的 PHP 错误)在 Debian 上运行(测试/席德)
任何提示/提示我错过了什么?我会感谢任何信息!提前致谢!