$_SERVER['REQUEST_URI'] ?? 'not set', 'REQUEST_METHOD' => $_SERVER['REQUEST_METHOD'] ?? 'not set', 'CONTENT_TYPE' => $_SERVER['CONTENT_TYPE'] ?? 'not set', 'CONTENT_LENGTH' => $_SERVER['CONTENT_LENGTH'] ?? 'not set', 'HTTP_USER_AGENT' => $_SERVER['HTTP_USER_AGENT'] ?? 'not set', 'REMOTE_ADDR' => $_SERVER['REMOTE_ADDR'] ?? 'not set', 'QUERY_STRING' => $_SERVER['QUERY_STRING'] ?? 'not set' ]); self::log('POST DATA', $_POST); self::log('GET DATA', $_GET); if (!empty($_FILES)) { $filesInfo = []; foreach ($_FILES as $key => $file) { if (is_array($file['name'])) { // Multiple files for ($i = 0; $i < count($file['name']); $i++) { $filesInfo[$key][$i] = [ 'name' => $file['name'][$i], 'type' => $file['type'][$i], 'size' => $file['size'][$i], 'tmp_name' => $file['tmp_name'][$i], 'error' => $file['error'][$i], 'exists' => file_exists($file['tmp_name'][$i]) ]; } } else { // Single file $filesInfo[$key] = [ 'name' => $file['name'], 'type' => $file['type'], 'size' => $file['size'], 'tmp_name' => $file['tmp_name'], 'error' => $file['error'], 'exists' => file_exists($file['tmp_name']) ]; } } self::log('FILES DATA', $filesInfo); } else { self::log('NO FILES IN REQUEST'); } // Логируем PHP настройки self::log('PHP UPLOAD SETTINGS', [ 'upload_max_filesize' => ini_get('upload_max_filesize'), 'post_max_size' => ini_get('post_max_size'), 'max_file_uploads' => ini_get('max_file_uploads'), 'file_uploads' => ini_get('file_uploads') ? 'On' : 'Off', 'max_execution_time' => ini_get('max_execution_time'), 'memory_limit' => ini_get('memory_limit'), 'upload_tmp_dir' => ini_get('upload_tmp_dir') ?: sys_get_temp_dir() ]); } public static function logError($message, $context = []) { self::log('ERROR: ' . $message, $context); } public static function logSuccess($message, $context = []) { self::log('SUCCESS: ' . $message, $context); } public static function logStep($step, $data = null) { self::log('STEP: ' . $step, $data); } } // Автоматически логируем каждый запрос если это POST к index.php if ($_SERVER['REQUEST_METHOD'] === 'POST' && (strpos($_SERVER['REQUEST_URI'], 'index.php') !== false || strpos($_SERVER['SCRIPT_NAME'], 'index.php') !== false)) { UploadDebugLogger::logRequest(); } // Перехватываем ошибки PHP function uploadDebugErrorHandler($errno, $errstr, $errfile, $errline) { if (strpos($errfile, 'Documents') !== false || strpos($errstr, 'upload') !== false) { UploadDebugLogger::logError("PHP Error [$errno]: $errstr in $errfile:$errline"); } return false; // Продолжаем стандартную обработку ошибок } function uploadDebugExceptionHandler($exception) { UploadDebugLogger::logError("Uncaught Exception: " . $exception->getMessage(), [ 'file' => $exception->getFile(), 'line' => $exception->getLine(), 'trace' => $exception->getTraceAsString() ]); } set_error_handler('uploadDebugErrorHandler'); set_exception_handler('uploadDebugExceptionHandler'); // Добавляем функцию для ручного логирования function debugUploadLog($message, $data = null) { UploadDebugLogger::log($message, $data); } ?>