Prosty skrypt menadżera plików na serwerze hostingowym

Czy zdarzyło Ci się kiedyś, że potrzebowałeś szybko podejrzeć zawartość katalogu na swoim serwerze, ale nie miałeś dostępu do FTP lub panelu hostingowego? Albo chciałeś po prostu wrzucić plik, usunąć coś lub zmienić nazwę – bez konieczności otwierania programu typu FileZilla?

Jeśli tak, to dobrze trafiłeś. W tym artykule pokażę Ci, jak w prosty sposób stworzyć lekki, własny menadżer plików w PHP, który pozwoli Ci zarządzać plikami bezpośrednio przez przeglądarkę.

Nie potrzebujesz do tego żadnych zaawansowanych umiejętności programistycznych. Wystarczy podstawowa znajomość PHP, trochę cierpliwości i kilka minut wolnego czasu.

Czym jest menadżer plików na serwerze?

Menadżer plików (ang. file manager) to po prostu aplikacja, która pozwala zarządzać plikami i folderami – tak jak robi to Eksplorator Windows czy Finder na Macu.
Na serwerze hostingowym taki skrypt działa przez przeglądarkę i umożliwia m.in.:

  • przeglądanie plików i katalogów,
  • przesyłanie plików (upload),
  • pobieranie plików,
  • usuwanie i zmienianie nazw,
  • edytowanie zawartości plików tekstowych.

Tego typu narzędzia są często wbudowane w panele administracyjne (np. cPanel, DirectAdmin), ale jeśli korzystasz z tańszego hostingu lub serwera VPS bez panelu – prosty skrypt PHP może być idealnym rozwiązaniem.

Co będzie Ci potrzebne?

Zanim przejdziemy do kodu, przygotuj kilka rzeczy:

  1. Dostęp do serwera WWW z obsługą PHP (praktycznie każdy hosting to oferuje).
  2. Edytor tekstu – np. VS Code, Notepad++ albo nawet zwykły Notatnik.
  3. Dostęp przez FTP lub SSH, aby wrzucić skrypt na serwer (tylko raz).
  4. Odrobina zdrowego rozsądku – będziemy operować na plikach, więc warto uważać, co się usuwa!

Krok 1: Utwórz plik filemanager.php

Utwórz nowy plik o nazwie filemanager.php i wklej do niego poniższy kod:

<?php
// =========================================
// Prosty Menadżer Plików w PHP
// =========================================
// UWAGA: Używaj tylko do celów testowych!
// Zalecane zabezpieczenie hasłem!
// =========================================

$root = __DIR__;
$current_dir = isset($_GET['dir']) ? realpath($root . '/' . $_GET['dir']) : $root;

// Sprawdzenie, czy katalog istnieje
if ($current_dir === false || strpos($current_dir, $root) !== 0) {
    $current_dir = $root;
}

function list_files($dir) {
    $items = scandir($dir);
    echo "<ul>";
    foreach ($items as $item) {
        if ($item == ".") continue;
        $path = $dir . '/' . $item;
        $rel_path = str_replace(__DIR__ . '/', '', $path);
        if (is_dir($path)) {
            echo "<li>[📁] <a href='?dir={$rel_path}'>{$item}</a></li>";
        } else {
            echo "<li>[📄] {$item} - 
                <a href='?download={$rel_path}'>Pobierz</a> | 
                <a href='?delete={$rel_path}' onclick='return confirm(\"Na pewno usunąć?\")'>Usuń</a>
            </li>";
        }
    }
    echo "</ul>";
}

// Pobieranie pliku
if (isset($_GET['download'])) {
    $file = realpath($root . '/' . $_GET['download']);
    if (strpos($file, $root) === 0 && is_file($file)) {
        header('Content-Description: File Transfer');
        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment; filename=' . basename($file));
        readfile($file);
        exit;
    }
}

// Usuwanie pliku
if (isset($_GET['delete'])) {
    $file = realpath($root . '/' . $_GET['delete']);
    if (strpos($file, $root) === 0 && is_file($file)) {
        unlink($file);
        header('Location: filemanager.php?dir=' . dirname($_GET['delete']));
        exit;
    }
}

// Upload pliku
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['upload'])) {
    $target = $current_dir . '/' . basename($_FILES['upload']['name']);
    move_uploaded_file($_FILES['upload']['tmp_name'], $target);
    header('Location: filemanager.php?dir=' . str_replace(__DIR__ . '/', '', $current_dir));
    exit;
}

echo "<h2>📂 Menadżer plików</h2>";
echo "<p>Aktualny katalog: <b>" . str_replace(__DIR__, '', $current_dir) . "</b></p>";
echo "<form method='post' enctype='multipart/form-data'>
    <input type='file' name='upload' required>
    <button type='submit'>Prześlij</button>
</form>";

echo "<hr>";
list_files($current_dir);
?>

Krok 2: Jak to działa?

Ten skrypt to naprawdę prosty przykład menadżera plików, który:

  • pokazuje pliki i katalogi w bieżącym folderze,
  • pozwala przechodzić między folderami,
  • umożliwia pobieranie i usuwanie plików,
  • pozwala przesyłać nowe pliki z dysku.

Co dzieje się pod maską?

  1. $root – ustala główny katalog, w którym skrypt działa.
  2. $_GET['dir'] – pozwala przełączać się między folderami.
  3. scandir() – funkcja PHP do listowania plików i katalogów.
  4. move_uploaded_file() – obsługuje wysyłanie plików.
  5. unlink() – usuwa plik.
  6. readfile() – służy do pobierania plików.

Krok 3: Dodaj proste zabezpieczenie hasłem

Ponieważ ten skrypt pozwala na operacje na plikach, nigdy nie zostawiaj go bez ochrony!
Wystarczy kilka linijek, żeby dodać prostą autoryzację HTTP:

<?php
$user = "admin";
$pass = "tajnehaslo123";

if (!isset($_SERVER['PHP_AUTH_USER']) || 
    $_SERVER['PHP_AUTH_USER'] != $user || 
    $_SERVER['PHP_AUTH_PW'] != $pass) {
    header('WWW-Authenticate: Basic realm="File Manager"');
    header('HTTP/1.0 401 Unauthorized');
    echo "Brak dostępu!";
    exit;
}
?>

Wklej ten fragment na sam początek pliku filemanager.php, przed resztą kodu.

Teraz, gdy wejdziesz na stronę, przeglądarka poprosi Cię o login i hasło – i tylko Ty będziesz mógł korzystać z menadżera.

Krok 4: Możesz go rozbudować!

To dopiero początek!
Jeśli chcesz, możesz łatwo dodać kolejne funkcje, np.:

  • Edytowanie plików tekstowych (np. .txt, .php, .html)
  • Tworzenie nowych katalogów
  • Podgląd zdjęć lub miniatury
  • Dodatkowe poziomy autoryzacji lub szyfrowanie hasła
  • Nowoczesny interfejs z HTML + CSS + JavaScript

Dla przykładu – oto fragment kodu, który pozwala edytować pliki tekstowe bezpośrednio z przeglądarki:

if (isset($_GET['edit'])) {
    $file = realpath($root . '/' . $_GET['edit']);
    if (strpos($file, $root) === 0 && is_file($file)) {
        if ($_SERVER['REQUEST_METHOD'] === 'POST') {
            file_put_contents($file, $_POST['content']);
            header('Location: filemanager.php?dir=' . dirname($_GET['edit']));
            exit;
        }
        $content = htmlspecialchars(file_get_contents($file));
        echo "<h3>Edytuj plik: " . basename($file) . "</h3>";
        echo "<form method='post'>
            <textarea name='content' style='width:100%;height:400px;'>$content</textarea>
            <button type='submit'>Zapisz</button>
        </form>";
        exit;
    }
}

Wystarczy dodać w sekcji listy plików link:

<a href='?edit={$rel_path}'>Edytuj</a>

Możesz teraz otwierać i zapisywać pliki z poziomu przeglądarki!

Krok 5: Gdzie umieścić skrypt?

  1. Wgraj plik filemanager.php do katalogu głównego swojego serwera (np. /public_html/).
  2. Wejdź na stronę: https://twojadomena.pl/filemanager.php
  3. Zaloguj się (jeśli dodałeś zabezpieczenie).
  4. Gotowe! Możesz przeglądać i zarządzać swoimi plikami online.

Krok 6: Wskazówki bezpieczeństwa

To bardzo ważne – ten skrypt daje dużą kontrolę nad plikami na serwerze, więc musisz zachować ostrożność:

  • Zawsze zabezpieczaj go hasłem – najlepiej silnym i długim.
  • Nie trzymaj go w publicznych katalogach (np. /public_html/), jeśli nie jest to konieczne.
  • Usuń go po użyciu, jeśli to tylko jednorazowe zadanie.
  • Nie udostępniaj linku nikomu – nawet znajomym.
  • Zmień nazwę pliku, np. na coś trudnego do zgadnięcia: fm_admin_23.php.

Krok 7: Bonus – wersja mini z UI

Jeśli chcesz, możesz dodać prosty interfejs HTML + CSS, żeby wyglądał bardziej „nowocześnie”:

<style>
body { font-family: Arial; background: #f8f9fa; color: #333; }
h2 { background: #007bff; color: #fff; padding: 10px; border-radius: 5px; }
ul { list-style: none; padding-left: 0; }
li { padding: 5px 0; }
a { color: #007bff; text-decoration: none; }
a:hover { text-decoration: underline; }
button { background: #007bff; color: #fff; border: none; padding: 8px 12px; cursor: pointer; border-radius: 5px; }
button:hover { background: #0056b3; }
</style>

Wklej powyższy fragment na początku pliku PHP (po zabezpieczeniu), a Twoje narzędzie od razu nabierze stylu i przejrzystości.

Jak widzisz, stworzenie własnego menadżera plików na serwerze to naprawdę prosta sprawa.
Kilka linijek PHP – i już możesz:

  • przeglądać katalogi,
  • usuwać, pobierać i wysyłać pliki,
  • edytować zawartość tekstową,
  • a przy tym mieć pełną kontrolę nad tym, co dzieje się na Twoim serwerze.

Nie musisz korzystać z zewnętrznych paneli ani instalować dużych narzędzi – wszystko możesz zrobić samodzielnie.

To świetny sposób, żeby nauczyć się czegoś praktycznego o PHP i mieć zawsze pod ręką narzędzie awaryjne, gdy coś pójdzie nie tak z dostępem przez FTP.

Szukasz taniego i dobrego hostingu dla swojej strony www? - Sprawdź Seohost.pl