FIXPLESK / RAPORT DIAGNOSTYCZNY

site.example.test

2026-09-15T18:47:10.405148+00:00 · Konto tenant-a

2 typów zdarzeń · 2 rozpoznań

Raport nie wykonał napraw. Brak błędów nie jest dowodem sprawności witryny.

SHA-256 planu: 7adfdfb92ac0c90f59a818c6a3ca50e8af53cd5d0ee4c9f6e3354796ad4c6d63

Braki i ograniczenia

WARNING · document_root_missing

Nieprawidłowy docroot lub brak ścieżki

Rozpoznany objaw wymaga rozróżnienia hipotez. Rozbudowana procedura jest w sekcji offline raportu i poleceniu triage.

WARNING · plesk_cli_option

Odrzucona składnia CLI

Rozpoznany objaw wymaga rozróżnienia hipotez. Rozbudowana procedura jest w sekcji offline raportu i poleceniu triage.

Procedury bez LLM

Rozwiń hipotezy, dowody i rollback
# fixplesk — diagnostyka różnicowa bez LLM

Domena: site.example.test; konto: tenant-a.
Sieć: 0. Procesy: 0. Zmiany: 0. Walidacja serwera: NIE WYKONANO.

Objaw wybiera procedurę, nie zmianę. Brak dowodu to UNKNOWN, nie FALSE. SUPPORTED potwierdza warunki zadeklarowane w pliku, nie prawdę o serwerze. Brak dopasowań nie potwierdza zdrowia. Analizator nie przyznaje uprawnień.

## document_root — Docroot, File Manager i brakujący katalog

Rozróżnij nieprawidłowe mapowanie, usunięte pliki, brak mountu i odmowę dostępu. Zmiana ścieżki nie odtworzy danych.
Objawy: DOCROOT_NOT_FOUND

### Krok 1: Ustal obiekt
Powiąż domenę z typem Plesk, kontem, subskrypcją i parent. Zapisz obecny document_root.
Walidacja: Pozytywna identyfikacja i poprzednia wartość do rollbacku.
Gdy nie działa: STOP przy niejednoznacznym obiekcie lub braku dostępu.

### Krok 2: Sprawdź system plików
Sprawdź mount, aktualny docroot, realpath, właściciela i ACL. Szukaj tylko w dozwolonej subskrypcji.
Walidacja: Rozróżnienie ENOENT, permission denied i brakującego mountu.
Gdy nie działa: Nie twórz pustego katalogu, który zamaskuje brak mountu.

### Krok 3: Powiąż instalację
Porównaj index.php, core, mapę Toolkit i URL. wp-config.php może być katalog wyżej; core w podkatalogu.
Walidacja: Jedyny zgodny kandydat, bez ujawniania katalogu nadrzędnego z sekretami.
Gdy nie działa: Wiele instalacji lub nietypowy layout: ręczny przegląd; nie wybieraj pierwszej.

### Krok 4: Zabezpiecz punkt powrotu
Zachowaj poprzednią konfigurację, wyniki odczytów, zakres i kopię adekwatną do zmiany. Uzgodnij timeout i kryterium sukcesu.
Walidacja: Możliwość odtworzenia, a nie samo istnienie ZIP; obowiązują blokady i zgoda operatora.
Gdy nie działa: STOP przed zapisem przy braku kopii, zgody lub możliwości weryfikacji.

### Krok 5: Zmień jedynie mapowanie
Po weryfikacji lokalnej pomocy przedstaw site/subdomain --update z -www-root względnym do root subskrypcji. Nie przenoś plików.
Walidacja: Docroot wskazuje zatwierdzony katalog; nie restartuj automatycznie FPM.
Gdy nie działa: Przy timeout nie zakładaj, że zmiana nie zaszła. Odczytaj stan po zakończeniu procesu.

### Krok 6: Sprawdź rezultat i sąsiadów
Powtórz odczyt zmienionego parametru, kontrolę HTTPS i analizę nowych logów. Oceń inne domeny współdzielące komponent.
Walidacja: Oczekiwany stan konfiguracji oraz funkcjonalność; kod 0 procesu nie wystarcza.
Gdy nie działa: Znany błąd: cofaj tylko uzgodniony zakres. Timeout: needs_recovery, bez automatycznego retry.

### Hipoteza: Katalog istnieje, ale jest niedostępny [needs_evidence]
Uzasadnienie: Istnienie i dostęp to różne warunki.
paths.current_exists: UNKNOWN; wymagane True; wynik missing; źródła: brak.
paths.access_ok: UNKNOWN; wymagane False; wynik missing; źródła: brak.
Warunkowa naprawa (bez wykonania): Przejdź do runbooka permissions; docroot pozostaw bez zmiany.
Rollback: Nie ma zaplanowanego zapisu; brak rollbacku. Nowa zmiana wymaga własnego preimage, walidacji i zatwierdzenia.
STOP: Nie wykonuj kolejnej zmiany przy nieznanym wyniku, konflikcie lub pogorszeniu innego tenanta. Zachowaj dziennik i uzgodnij stan.

### Hipoteza: Plesk wskazuje nieistniejący katalog, właściwa instalacja istnieje [needs_evidence]
Uzasadnienie: Dowody odróżniają złe mapowanie od utraty plików i granic uprawnień.
identity.confirmed: UNKNOWN; wymagane True; wynik missing; źródła: brak.
cli.www_root_supported: UNKNOWN; wymagane True; wynik missing; źródła: brak.
paths.current_exists: UNKNOWN; wymagane False; wynik missing; źródła: brak.
paths.candidate_unique: UNKNOWN; wymagane True; wynik missing; źródła: brak.
paths.inside_subscription: UNKNOWN; wymagane True; wynik missing; źródła: brak.
paths.wp_layout_confirmed: UNKNOWN; wymagane True; wynik missing; źródła: brak.
paths.access_ok: UNKNOWN; wymagane True; wynik missing; źródła: brak.
storage.mount_healthy: UNKNOWN; wymagane True; wynik missing; źródła: brak.
Warunkowa naprawa (bez wykonania): Przedstaw pojedynczą zmianę docroot za pomocą docroot-plan; wykonanie pozostaje ręczne w tej wersji.
Rollback: Odczytaj bieżącą wartość. Jeśli nadal równa planowanej i proces zakończony, przywróć poprzednią wartość tym samym interfejsem. Nie usuwaj plików ani nowych katalogów. Sprawdź zdrowie niezależnie od odtworzenia parametru.
STOP: Nie wykonuj kolejnej zmiany przy nieznanym wyniku, konflikcie lub pogorszeniu innego tenanta. Zachowaj dziennik i uzgodnij stan.

### Hipoteza: Nie znaleziono jednoznacznej instalacji [needs_evidence]
Uzasadnienie: Nie ma dowodu, że przestawienie wskaźnika przywróci witrynę.
paths.current_exists: UNKNOWN; wymagane False; wynik missing; źródła: brak.
paths.candidate_unique: UNKNOWN; wymagane False; wynik missing; źródła: brak.
storage.mount_healthy: UNKNOWN; wymagane True; wynik missing; źródła: brak.
Warunkowa naprawa (bez wykonania): Wyjaśnij usunięcie/migrację/staging; odtworzenie dopiero z właściwej kopii.
Rollback: Restore może nadpisać nowsze dane: przed nim zrób osobny punkt powrotu i uzgodnij okno.
STOP: Nie wykonuj kolejnej zmiany przy nieznanym wyniku, konflikcie lub pogorszeniu innego tenanta. Zachowaj dziennik i uzgodnij stan.

### Hipoteza: Nie ma właściwego mountu lub jest uszkodzony [needs_evidence]
Uzasadnienie: Zmiana docroot mogłaby ukryć problem z wolumenem i zapisywać dane w złym miejscu.
storage.mount_healthy: UNKNOWN; wymagane False; wynik missing; źródła: brak.
Warunkowa naprawa (bez wykonania): Zatrzymaj zmiany aplikacji; napraw warstwę storage zgodnie z procedurą operatora.
Rollback: Nie ma zaplanowanego zapisu; brak rollbacku. Nowa zmiana wymaga własnego preimage, walidacji i zatwierdzenia.
STOP: STOP przy błędach I/O; nie wykonuj mkdir/chown jako naprawy.

Zabronione skróty: Wybór root wyłącznie po wp-config.php; Ścieżka innego tenanta lub symlink poza subskrypcję; Automatyczny restart wszystkich usług; Ręczna edycja bazy Plesk
Referencje katalogu: plesk_docs.site_cli, plesk_docs.subdomain_cli, wordpress_docs.hardening, wordpress_docs.own_directory

## plesk_cli_syntax — Odrzucona opcja CLI Plesk

Błąd parsera CLI jest problemem składni/wersji lub wybranego narzędzia, nie dowodem uszkodzenia WordPress.
Objawy: PLESK_CLI_UNKNOWN_OPTION

### Krok 1: Zachowaj błąd
Odczytaj stderr, exit code, wersję i dokładne argumenty poprzedniego wywołania.
Walidacja: Odrzucona opcja i brak pomylenia błędu uprawnień.
Gdy nie działa: Nie próbuj kolejnych opcji przez zapisy.

### Krok 2: Ustal tożsamość i możliwości
Odczytaj site/subdomain --help oraz --info. Rozpoznaj obiekt pozytywnie, bez wnioskowania z nieudanego domain --info.
Walidacja: Potwierdzony typ/parent i token -www-root.
Gdy nie działa: UNKNOWN oznacza procedurę ręczną lub eskalację do administratora.

### Krok 3: Zbuduj plan dla właściwego interfejsu
Użyj docroot-plan. Dla subdomain wymagaj nazwy względnej, -domain i ścieżki względnej do subskrypcji.
Walidacja: Przedstawiony argv, bez shell i bez --httpdocs/--docroot/--hgroup.
Gdy nie działa: Brak potwierdzenia składni blokuje propozycję zapisu.

### Krok 4: Zabezpiecz punkt powrotu
Zachowaj poprzednią konfigurację, wyniki odczytów, zakres i kopię adekwatną do zmiany. Uzgodnij timeout i kryterium sukcesu.
Walidacja: Możliwość odtworzenia, a nie samo istnienie ZIP; obowiązują blokady i zgoda operatora.
Gdy nie działa: STOP przed zapisem przy braku kopii, zgody lub możliwości weryfikacji.

### Krok 5: Sprawdź rezultat i sąsiadów
Powtórz odczyt zmienionego parametru, kontrolę HTTPS i analizę nowych logów. Oceń inne domeny współdzielące komponent.
Walidacja: Oczekiwany stan konfiguracji oraz funkcjonalność; kod 0 procesu nie wystarcza.
Gdy nie działa: Znany błąd: cofaj tylko uzgodniony zakres. Timeout: needs_recovery, bez automatycznego retry.

### Hipoteza: To błąd dostępu, nie klasyfikacji domeny [needs_evidence]
Uzasadnienie: Odmowa dostępu nie mówi, czy obiekt jest domeną czy subdomeną.
cli.access_ok: UNKNOWN; wymagane False; wynik missing; źródła: brak.
Warunkowa naprawa (bez wykonania): Przekaż uprawnionemu operatorowi zadanie odczytu w wymaganym zakresie.
Rollback: Nie ma zaplanowanego zapisu; brak rollbacku. Nowa zmiana wymaga własnego preimage, walidacji i zatwierdzenia.
STOP: Nie eskaluj konta ani nie pomijaj kontroli zakresu.

### Hipoteza: Użyto nieobsługiwanej opcji [needs_evidence]
Uzasadnienie: Pozytywna pomoc wskazuje obsługiwany interfejs; nie wymaga LLM.
cli.option_rejected: UNKNOWN; wymagane True; wynik missing; źródła: brak.
cli.www_root_supported: UNKNOWN; wymagane True; wynik missing; źródła: brak.
identity.confirmed: UNKNOWN; wymagane True; wynik missing; źródła: brak.
Warunkowa naprawa (bez wykonania): Zastąp błędną składnię planem -www-root dopiero po audycie docroot; nie wykonuj korekty w pętli retry.
Rollback: Nie ma zaplanowanego zapisu; brak rollbacku. Nowa zmiana wymaga własnego preimage, walidacji i zatwierdzenia.
STOP: Nie wykonuj kolejnej zmiany przy nieznanym wyniku, konflikcie lub pogorszeniu innego tenanta. Zachowaj dziennik i uzgodnij stan.

Zabronione skróty: Zgadywanie --httpdocs lub --hgroup; Wnioskowanie typu obiektu wyłącznie z błędu domain --info; Próbne zapisy w celu wykrycia opcji
Referencje katalogu: plesk_docs.site_cli, plesk_docs.subdomain_cli

## Następne odczyty, bez dublowania

1. Czy skonfigurowany docroot istnieje? [unknown]
Sprawdź dokładny document_root z Plesk przez stat/readlink jako administrator oraz możliwość przejścia po katalogach jako użytkownik witryny.
Oczekiwany dowód: Istnienie katalogu to osobny fakt od prawa jego odczytu.
Dotyczy 3 hipotez; koszt względny 1/10.
2. Czy lokalna pomoc dokumentuje -www-root? [unknown]
Zachowaj plesk bin site --help oraz plesk bin subdomain --help. Użyj capability-check; żadnego próbnego zapisu.
Oczekiwany dowód: Osobny token --update albo -u oraz -www-root, a dla subdomain również -domain; zgodność z danym narzędziem.
Dotyczy 2 hipotez; koszt względny 1/10.
3. Czy potwierdzono obiekt Plesk i jego zakres? [unknown]
Odczytaj site/subdomain --info oraz metadane właściciela i subskrypcji z uprawnionego API/panelu. Zapisz kod wyjścia; błędy dostępu i timeout traktuj oddzielnie od braku obiektu.
Oczekiwany dowód: Dokładna domena, typ obiektu, parent, konto, subskrypcja i źródło pozytywnej identyfikacji.
Dotyczy 2 hipotez; koszt względny 1/10.
4. Czy użytkownik puli i serwera może odczytać katalog? [unknown]
Sprawdź namei/stat, UID/GID, ACL i polityki MAC na dokładnej ścieżce. Nie używaj chmod 777.
Oczekiwany dowód: Możliwe przejście przez rodziców i odczyt wymaganych plików.
Dotyczy 2 hipotez; koszt względny 1/10.
5. Czy właściwy mount jest obecny i zapisywalny? [unknown]
Sprawdź mount, read-only, błędy I/O oraz stan wolumenu przed mkdir lub restore.
Oczekiwany dowód: Brak zaginionego mountu i błędów urządzenia.
Dotyczy 3 hipotez; koszt względny 2/10.
6. Czy znaleziono dokładnie jeden właściwy katalog witryny? [unknown]
Przeszukaj wyłącznie zatwierdzony katalog subskrypcji. Zestaw pliki core, Toolkit instance ID i site URL; uwzględnij staging.
Oczekiwany dowód: Jedna jednoznacznie związana z domeną instalacja; nie wybieraj pierwszego wyniku find.
Dotyczy 2 hipotez; koszt względny 2/10.
7. Czy docelowa ścieżka i jej realpath pozostają w subskrypcji? [unknown]
Porównaj komponenty ścieżki i wynik readlink -e/realpath. Sprawdź symlinki i tożsamość właściciela.
Oczekiwany dowód: Brak wyjścia poza root, traversal i wskazania innego tenanta.
Dotyczy 1 hipotez; koszt względny 1/10.
8. Czy potwierdzono układ WordPress i wejście index.php? [unknown]
Sprawdź wp-load.php, wp-settings.php, wp-admin, wp-includes/version.php i index.php bez uruchamiania PHP. wp-config.php może być wyżej; core może leżeć w podkatalogu.
Oczekiwany dowód: Powiązanie wejścia HTTP z instalacją core; sam wp-config.php nie wystarcza.
Dotyczy 1 hipotez; koszt względny 2/10.
9. Czy konto ma dostęp do odczytu Plesk? [unknown]
Sprawdź kod wyniku polecenia informacyjnego i zgodność roli. Nie zmieniaj roli automatycznie.
Oczekiwany dowód: Odczyt zaakceptowany; permission denied nie jest not found.
Dotyczy 1 hipotez; koszt względny 1/10.
10. Czy poprzednia komenda rzeczywiście odrzuciła opcję? [unknown]
Sprawdź stderr i exit code konkretnego wywołania. Zachowaj argumenty bez haseł.
Oczekiwany dowód: Unknown/unrecognized option odnoszące się do opcji polecenia, nie wyjątek aplikacji.
Dotyczy 1 hipotez; koszt względny 1/10.

Odsyłacze

Obecność odsyłacza nie oznacza pobrania dokumentu.