<?php
error_reporting(E_ALL);
function_exists('date_default_timezone_set') && date_default_timezone_set('PRC');
set_error_handler('error_handler_fun');


define('ANMP_DEBUG', 0);


# 全局配置文件路径常量
define('ANMP_ROOT', str_replace('\\', '/', realpath(dirname(__FILE__).'/../../')));
define('ANMP_CONF_FILE', ANMP_ROOT.'/AnmpManager.conf');  
define('ANMP_MLOG_FILE', ANMP_ROOT.'/AnmpManager.log');
define('ANMP_MENU_TMPL', ANMP_ROOT.'/AnmpManager.tpl');
define('ANMP_MENU_FILE', ANMP_ROOT.'/AnmpManager.ini');


# 读取主配置文件
$_ENV = array();
$_ENV['ANMP_CONF'] = parse_ini_file(ANMP_CONF_FILE);
define('ANMP_HTDOCS', $_ENV['ANMP_CONF']['anmp_htdocs']);


/**
 * 记录日志
**/
function anmp_log($msg, $exit=false) 
{
	var_dump($msg);
	$logmsgs = date('[Y-m-d H:i:s (T)]') . "  {$msg}\n";
	error_log($logmsgs, 3, ANMP_MLOG_FILE);
	if($exit) exit('EXEC Error');
}


/*
 * 更新INI配置文件
**/
function anmp_set_ini($params) 
{
	$contents = file_get_contents(ANMP_CONF_FILE);
	foreach($params as $param => $val){
		$contents = preg_replace('#(\s*)(' .$param . ')(\s*)=(\s*)"([^"]+)"#', "\\1\\2\\3=\\4\"{$val}\"", $contents);
	}
	return file_put_contents(ANMP_CONF_FILE, $contents);
}


//自定义错误处理
function error_handler_fun($errno, $errmsg, $errfile, $errline, $errvars)
{
	$user_errors = array(E_USER_ERROR, E_USER_WARNING, E_USER_NOTICE);
	$errortype   = array (
		E_ERROR              => 'EMERG',
		E_WARNING            => 'WARNING',//非致命的 run-time 错误。不暂停脚本执行。
		E_PARSE              => 'EMERG',//语法错误
		E_NOTICE             => 'NOTICE',//Run-time 通知。
		E_CORE_ERROR         => 'EMERG',
		E_CORE_WARNING       => 'WARNING',
		E_COMPILE_ERROR      => 'EMERG',
		E_COMPILE_WARNING    => 'WARNING',
		E_USER_ERROR         => 'EMERG',//致命的用户生成的错误。
		E_USER_WARNING       => 'WARNING',//非致命的用户生成的警告。
		E_USER_NOTICE        => 'NOTICE',//用户生成的通知。
		E_STRICT             => 'NOTICE',
		E_RECOVERABLE_ERROR  => 'EMERG',//可捕获的致命错误。
	);
	
	if (isset($errortype[$errno])) {
		$error['type'] = $errortype[$errno];
	} else {
		$error['type'] = $errno;
	}

	$err  = date('[Y-m-d H:i:s (T)]') . '  ';
	$err .= $error['type'] . ':  ';
	$err .= $errmsg  . '  ';
	$err .= $errfile . '  ';
	$err .= '第'.$errline.'行  ';
	$err .= "\n";

	error_log($err, 3, ANMP_MLOG_FILE);
}


// PHP配置参数
$PHP_CONF_PARAMS = array (
	'ASP风格标签（asp tags）'      => 'asp_tags',
	'短标签支持（short open tag）' => 'short_open_tag',
	'安全模式（safe mode）'        => 'safe_mode',
	'显示版本信息（expose PHP）'   => 'expose_php',
	'动态加载链接库（enable dl）'  => 'enable_dl',

	'隐式绝对刷送（implicit flush）'          => 'implicit_flush',
	'页面输出缓存（output buffering）'        => 'output_buffering',
	'页面压缩输出（zlib output compression）' => 'zlib.output_compression',

	'报告内存泄漏（report memleaks）'   => 'report_memleaks',
	'记录错误日志（log errors）'        => 'log_errors',
	'捕获错误消息（track errors）'      => 'track_errors',
	'显示错误信息（display errors）'    => 'display_errors',
	'显示启动错误信息（display startup errors）' => 'display_startup_errors',
	'忽略重复错误信息（ignore repeated errors）' => 'ignore_repeated_errors',
	'忽略重复的错误源（ignore repeated source）' => 'ignore_repeated_source',

	'数据反斜杠转义（magic quotes runtime）' => 'magic_quotes_runtime',
	'字符串反斜杠转义（magic quotes gpc）'   => 'magic_quotes_gpc',
	// 'magic quotes sybase'=>'magic_quotes_sybase',

	'本地文件上传（file uploads）'      => 'file_uploads',
	'打开远程文件（allow url fopen）'   => 'allow_url_fopen',
	'包含远程文件（allow url include）' => 'allow_url_include',

	// 'Zend兼容模式（ze1 compatibility mode）' => 'zend.ze1_compatibility_mode',
	// '(XDebug) :  Remote debug'               => 'xdebug.remote_enable',
	// '(XDebug) :  Profiler'                   => 'xdebug.profiler_enable',
	// '(XDebug) :  Profiler Enable Trigger'    => 'xdebug.profiler_enable_trigger',

	// 'y2k compliance'=>'y2k_compliance',
	// '自动注册全局变量（register globals）'=>'register_globals',
	// '自动注册超全局变量（register long arrays）'=>'register_long_arrays',
	// '声明Argv和Argc变量（register argc argv）'=>'register_argc_argv',
);

