1
Încarcă manager.php în dosarul pe care vrei să îl administrezi din rădăcina web
2
Deschide manager.php în browser
3
Activează licența gratuită emisă pentru domeniul curent
4
Finalizează configurarea inițială și alege parola de acces
Instalare dintr-un singur fișier. Nu sunt necesare Composer, npm sau o bază de date. Starea privată a managerului este păstrată automat în .tyrusmanager, în afara rădăcinii web. Setări → Backupuri folosește implicit modul Auto: o verificare discretă, pe aceeași origine, testează dacă un fișier temporar .bak inofensiv poate fi citit prin HTTP. Dacă este blocat, backupurile rămân lângă fișierul original pentru vizibilitate maximă; dacă este expus sau verificarea nu poate fi finalizată, backupurile noi folosesc o cale oglindită în .tyrusmanager/backups. Nu se creează catalog sau fișier separat de evidență, iar backupurile existente lângă fișiere nu sunt mutate automat.
Structură recomandată
/public_html/
manager.php
app/
assets/
/private-or-parent-storage/
.tyrusmanager/
.manager_config
.activity_log
.login_attempts
.blocked_ips
backups/
ExempluPune manager.php în /public_html/tools/ pentru a administra acel subarbore fără framework sau manager de pachete.
Modelul actual de licențiere: PHP File Manager este gratuit și asociat domeniului. O licență gratuită deja activată pentru un domeniu rămâne gratuită pentru acel domeniu, conform termenilor acceptați la activare.
Activarea are loc înaintea configurării inițiale. Versiunea descărcabilă validează cheia de licență pentru domeniul curent și păstrează starea locală a licenței în spațiul privat al managerului.
1
Deschide fișierul manager.php descărcat pe domeniul unde va fi folosit.
2
Introdu cheia de licență gratuită emisă pentru acel domeniu și alege Activează licența.
3
După validarea reușită, finalizează asistentul de configurare. Nepotrivirea domeniului, suspendarea accesului și erorile de integritate rămân erori explicite și nu sunt ocolite.
Ai nevoie de o cheie de licență?
Obține Tyrus gratuit. Verificarea prin email emite o cheie gratuită asociată domeniului introdus.
🛸
Prima rulare: activarea licenței și configurarea
La prima lansare, versiunea licențiată validează licența pentru domeniul curent, apoi deschide configurarea inițială. Ecranul de configurare păstrează interfața cinematică întunecată, fundalul SVG animat și identitatea vizuală Tyrus.
① Parola de acces
- Minimum 15 caractere
- Indicator live pentru puterea parolei, cu evaluare orientată în primul rând după lungime
- Indicator live pentru potrivirea parolelor între cele două câmpuri
- Sugerează parolă puternică generează o parolă criptografic sigură folosind Web Crypto
- Afișează sau ascunde oricare dintre câmpurile de parolă
② URL Site
- URL-ul complet al site-ului, folosit de Previzualizare și de acțiunea pentru golirea cache-ului site-ului
- Validare URL direct în formular
- Sfat pentru logo: scrie fiecare cuvânt din domeniu cu inițială mare pentru a separa culorile în logo-ul dinamic
③ Spațiu pe disc pentru hosting
- Valori presetate: 10 / 20 / 50 / 100 / 200 GB, plus o valoare personalizată
- Câmp personalizat pentru GB, cu controale de incrementare
- Conversie live din GB în bytes
Selector de limbă: EN / RO / DK este disponibil direct în interfața de configurare.
Trimiterea configurării: validarea rulează înainte de POST, iar fluxul PRG previne retrimiterea accidentală a formularului după redirectări.
Configurația este stocată ca JSON în fișierul privat .tyrusmanager/.manager_config: hash bcrypt al parolei, URL-ul site-ului, cota de disc, data configurării și limbă.
ExempluPentru https://example.com, setează URL-ul site-ului exact la originea HTTPS și alege limita de disc care corespunde contului de găzduire administrat.
🔐
Autentificare & Securitate
- Parola este verificată folosind hashul bcrypt din fișierul privat
.tyrusmanager/.manager_config
- Schimbă parola din Setări → Securitate. Parola curentă este reverificată cu
password_verify(), încercările sunt limitate, iar noul hash bcrypt este scris atomic în fișierul privat .tyrusmanager/.manager_config.
- Generator de parole integrat, cu lungime reglabilă între 16 și 64 de caractere, aleatoriu Web Crypto și indicator live orientat în primul rând după lungime
- Protecție anti brute-force: starea încercărilor eșuate este păstrată privat în
.tyrusmanager/.login_attempts
- Încercarea 1: “Ceva nu pare în regulă aici.”
- Încercarea 2: “Interesant... continui?”
- Încercarea 3: IP-ul este blocat timp de 15 minute și înregistrat în fișierul privat
.tyrusmanager/.blocked_ips.
- Expirarea sesiunii: 30 de minute de inactivitate, apoi revenire automată la autentificare
- O bară de avertizare apare cu 2 minute înainte de expirare și afișează numărătoarea inversă
- Controlul Extinde reîmprospătează atât contorul de inactivitate din browser, cât și sesiunea PHP
- Activitatea mouse-ului, tastaturii, clicurile și derularea reîmprospătează contorul de inactivitate din browser
- Acțiunile sunt înregistrate cu marcă temporală în fișierul privat
.tyrusmanager/.activity_log; adresa IP este păstrată doar pentru LOGIN și LOGOUT
ExempluTrei autentificări eșuate blochează IP-ul timp de 15 minute; activitatea autentificată folosește apoi expirarea normală după 30 de minute de inactivitate.
În timpul blocării temporare a unui IP, pagina normală de autentificare este înlocuită de un ecran canvas dedicat accesului blocat:
- Față umană desenată procedural folosind
ctx.bezierCurveTo și ctx.ellipse
- Ochi care urmăresc cursorul în timp real; pupilele urmăresc mouse-ul cu mișcare limitată
- Clipire aleatorie cu temporizare variabilă (randomizată 180–480 cadre)
- Efect glitch periodic; deplasare secțiune
getImageData/putImageData + nuanță roșie
- Linii CRT; linii orizontale la intervale de 4px pe întreaga pânză
- Vignetă radială; marginile întunecate se închid
- Cursor personalizat; cursorul implicit este ascuns și înlocuit cu un punct roșu mic
- Blocat: clic dreapta, F12, Ctrl+U/I/S, Escape, derulare
- Mesaje afișate progresiv, cu întârzieri de 2s și 5s
- Mouse-ul părăsește fereastra: culoarea textului se schimbă + spațiul dintre litere se extinde
- Animație subtilă de respirație aplicată elementului body
ExempluCând un IP este blocat temporar, formularul normal de autentificare este înlocuit de ecranul dedicat accesului blocat până la expirarea blocării.
Bara Antet
- Logo dinamic; generat din URL-ul site-ului. Fiecare cuvânt colorat diferit. Majusculele în URL = culoare separată per cuvânt
- Bara de utilizare a discului; bara vizuală arată spațiul folosit / total cu valori exacte MiB/GiB. Memoria cache se actualizează la fiecare 30 de minute
- Selector animat de limbă; pilula alunecă lin între EN / RO / DK (cubic-bezier). Fără reîncărcarea paginii; interfața completă este rerandată prin
applyUiLang(). Pe mobil: butoane simple cu chenar
- Butoane antet: 📋 Jurnal · ⚠ Erori · 🐘 PHP · ⌨ Scurtături · 🔓/🔑 Root OFF/ON · ▶ Previzualizare · 💾 Salvează · Ieșire
Bara de Unelte
- Navigare; ← Înapoi / → Înainte cu istoric complet. Butoane dezactivate corect la limitele istoricului
- Breadcrumb; segmente de cale clicabile pentru navigare rapidă
- Căutare fișiere; căutare după numele fișierului (max 100 rezultate, fără distincție majuscule, recursivă)
- În fișiere; comutator pentru panoul de căutare în conținut
- Dosar nou / Fișier nou; modal cu câmp pentru nume
Bara Laterală (Panou Stânga)
- Redimensionabil; tragi chenarul între 160px și 520px. Valoarea este păstrată în localStorage și sessionStorage. Dublu-clic resetează la 270px.
- FIȘIERE SERVER; arbore complet de fișiere și dosare cu iconițe de tip
- Favorite ⭐; marchează sau demarchează orice fișier ori dosar. Stocate pe server. Iconiță SVG în formă de stea afișată direct în listă
- Selecție multiplă; căsuțe de selecție + Selectează tot. În lot: ZIP · Descarcă · Redenumește · Șterge
- ZIP în lot; creează o arhivă cu nume din elementele selectate
- Descărcare în lot; selectate ca ZIP, transmise direct în browser (construit prin
tempnam, șters imediat după transfer)
- Redenumire multiplă; configurare de redenumire în lot pentru fișierele selectate
- Zona de încărcare; trage & plasează sau clic. La conflict: Înlocuiește / Păstrează ambele (auto-numerotate) / Anulează
- Căutare în conținut; caută în interiorul fișierelor din bara laterală
Meniu contextual (Clic dreapta / Apăsare lungă)
Editează · Previzualizează · Deschide · Descarcă · Redenumește · ZIP / Copie de siguranță · Extrage aici · Permisiuni (chmod) · Șterge · Adaugă la Favorite / Scoate din Favorite
ExempluSelectează mai multe fișiere jurnal în bara laterală, creează un ZIP din selecție, apoi deschide alt dosar fără să pierzi filele deja deschise în editor.
Construit pe CodeMirror 5. Pachetul editorului este inclus în manager.php și servit de același fișier, fără CDN terț în timpul rulării.
203 de mapări de fișiere verificate
Editorul inclus are 203 de mapări verificate pentru nume/conținut care se rezolvă în 110 moduri CodeMirror înregistrate. Stratul de mapare include extensii și cazuri speciale după nume/conținut.
C · C++ · C# · Java · Clojure · CMake · COBOL · CoffeeScript · Lisp · Crystal · CSS · Cypher · D · Dart · Diff/Patch · Django · Dockerfile · DTD · Elm · Erlang · Fortran · Assembly (GAS) · GFM · Gherkin · Go · Groovy · Handlebars · Haskell · HTML · HTTP · INI · JavaScript · TypeScript · JSON · JSON5 · JSONC · Jinja2 · JSX · TSX · Julia · Kotlin · LESS · LiveScript · Lua · Markdown · Mathematica · F#/OCaml · Modelica · Mscgen · NGINX · NSIS · N-Triples · Octave · Pascal · PEG.js · Perl · PHP · Pig · PowerShell · Properties · Protocol Buffers · Puppet · Python · Q/KDB+ · R · RPM Spec · reStructuredText · Ruby · Rust · SAS · SCSS · Sass · Scala · Scheme · Shell/Bash · Zsh · Fish · Ksh · Csh · Tcsh · Smalltalk · Smarty · SQL · MySQL · PostgreSQL · SQLite · LaTeX · Stylus · Swift · Tcl · Textile · TOML · Turtle (RDF) · Twig · Visual Basic · VBScript · Verilog · VHDL · Vue · WebIDL · XML · SVG · XQuery · YAML · Z80 Assembly
Detecție specială după nume fișier: .htaccess → shell · .env → shell · Dockerfile → dockerfile · Makefile → shell · .gitignore → shell · .babelrc / .eslintrc → JSON
Funcții Editor
- Potrivire paranteze · Auto-închidere paranteze · Evidențierea liniei active
- Pliere cod; foldGutter cu 4 addon-uri de pliere (acolada, indentare, XML, comentariu)
- Autocompletare; 5 motoare de sugestii (anyword, JS, CSS, HTML, XML). Întârziere 400ms, minimum 3 caractere, suprimată în șiruri și comentarii. Ctrl+Space pentru declanșare manuală.
- Comentare/decomentare;
Ctrl+/
- Control mărime font; A− / A+ în bara de jos
- Scrollbar-uri personalizate; stil macOS (chenar transparent 3px)
- Previzualizare imagine; jpg, jpeg, png, gif, webp, svg și ico sunt afișate inline în locul editorului
File
- Mai multe fișiere deschise simultan
- Reordonare prin drag & drop; indicator de plasare stânga/dreapta cu box-shadow violet
- Punct de modificare; indicator vizual când fișierul are modificări nesalvate
- Meniul contextual al filei (clic dreapta): Închide / Închide celelalte / Închide nemodificate / Închide tot
- Avertisment modificări nesalvate la închidere
Găsește & Înlocuiește
- Evidențiază toate potrivirile simultan cu markText
- Potrivire activă cu culoare diferită; afișaj contor:
3 / 12
- Navigare: Enter (următorul) / Shift+Enter (anteriorul)
- Înlocuiește Unul → / Înlocuiește Tot ⟳
ExempluDeschiderea fișierelor Dockerfile, composer.json, app.tsx și schema.sql selectează modul verificat al editorului din maparea nume/conținut, în locul unui singur mod text generic.
Se deschide ca panou lateral lângă editor prin butonul 🔍 Analizează. Suportă: .php · .css · .scss · .less · .js · .ts · .jsx · .tsx
Marcatori vizuali pe linie; probleme marcate direct în editor cu clase codificate prin culori. Clic pe problemă în panou → setCursor + scrollIntoView + flash evidențiere 1,5s pe linie.
Detecție fișier minificat; după nume fișier (.min.js, .bundle.js, etc.) sau conținut (linie medie >300 caractere). Afișează mesaj prietenos cu buton “Analizează oricum →”.
Verificări PHP
| Verificare | Severitate | Descriere |
| Sintaxă PHP | 🔴 error | php -l prin shell_exec sau fallback token_get_all() ParseError |
| var_dump / print_r lăsat în cod | 🟡 warning | Ieșire de depanare neeliminată |
| $_SERVER['PHP_SELF'] fără htmlspecialchars() | 🟡 warning | Vulnerabilitate XSS |
| die()/exit() cu șir hardcodat | 🟡 warning | Expune informații server în producție |
| $_POST/$_GET/$_REQUEST fără isset() | 🟡 warning | Conștient de context; verificate 3 linii sus/jos |
| Greșeli de tipar funcții PHP (118 tipare) | 🔴 error | array_mpa → array_map, jsno_encode → json_encode, etc. |
| Definiții de funcții duplicate | 🔴 error | Cu referință la linia primei definiții |
| return în afara oricărei funcții | 🟡 warning | Analiză structurală a adâncimii acoladelor |
| md5() pentru parole | 🟡 warning | Doar când e lângă contextul password/pass/pwd/hash |
| TODO / FIXME / HACK | 🔵 info | Textul complet al comentariului extras |
Verificări CSS / SCSS / LESS
| Verificare | Severitate | Descriere |
| Proprietate CSS invalidă | 🟡 warning | 350+ proprietăți valide verificate |
| Greșeală de tipar proprietate CSS | 🔴 error | ~160 tipare, sugestie Levenshtein ≤ 3 |
| Valoare de proprietate invalidă | 🔴 error | Valoare verificată față de opțiunile valide cunoscute per proprietate |
| Proprietate duplicată în bloc | 🟡 warning | Aceeași proprietate definită de două ori în același bloc |
| Punct și virgula dublu ;; | 🟡 warning | Greșeală de tipar frecventă |
Verificări JS / TS
| Verificare | Severitate | Descriere |
| console.log lăsat în cod | 🔵 info | Eliminați înainte de producție |
| debugger; lăsat în cod | 🟡 warning | Oprește execuția în browser |
| typeof comparat cu == | 🟡 warning | Trebuie folosit === |
| Comparație NaN invalidă (=== NaN) | 🔴 error | Se recomandă Number.isNaN() sau isNaN() |
| eslint-disable lăsat în cod | 🔵 info | Poate fi uitat |
| TODO / FIXME / HACK | 🔵 info | Textul complet al comentariului extras |
Robustețe: limite PCRE 10M, JIT dezactivat și protecție cu try/catch pe Throwable. Compatibil PHP 8.0 → 8.4.
ExempluAnalizează un fișier PHP care conține un pattern typo cunoscut: analizorul raportează problema, marchează linia și permite salt direct la ea. Motorul PHP conține 118 pattern-uri typo verificate.
Fiecare salvare poate păstra versiunea anterioară ca .bak. Modul selectat controlează unde sunt scrise backupurile noi; backupurile existente rămân utilizabile când modul este schimbat.
- Auto — recomandat: după autentificare, o probă pe aceeași origine verifică dacă un
.bak temporar inofensiv poate fi citit prin HTTP. Serverele protejate folosesc backupuri lângă original; serverele expuse sau neverificate folosesc spațiul privat.
- Lângă original: scrie
file.ext.bak lângă file.ext. Folosește acest mod numai dacă accesul HTTP direct la fișierele .bak este blocat de server.
- Spațiu privat: scrie o cale de backup oglindită în
.tyrusmanager/backups, în afara rădăcinii web publice. Nu este creat un catalog separat de backupuri.
ExempluEditează /public_html/app/config.php și salvează o dată. În modul lângă original, versiunea anterioară devine /public_html/app/config.php.bak; în modul privat este oglindită sub .tyrusmanager/backups. Diff .bak rezolvă oricare dintre locații.
Clic pe orice fișier .zip → se deschide ca panou în locul zonei editorului.
- Arbore expandabil; ierarhie cu indentare pe niveluri
- Căsuțe de selecție în cascadă; selectarea dosarului selectează recursiv toate elementele copil. Selecția parțială trimite numai fișierele alese.
- Sortare ierarhică personalizată; dosarele primele, fișierele în ordine alfabetică
- Extracție selectivă; elimină inteligent prefixul pentru a evita căi imbricate nedorite
- Preverificare conflicte; arată exact fișierele care vor fi suprascrise înainte de extracție
- Extragere prin drag & drop; trage din panoul ZIP pe un dosar din panoul de fișiere. Dosarul destinație se evidențiază când cursorul trece peste el
- Extracție completă; extrage întregul conținut dintr-o singură operație
ExempluDeschide release.zip în navigatorul ZIP, inspectează mai întâi arborele, selectează doar config/ și public/, apoi extrage acele intrări în loc să dezarhivezi toată arhiva.
Căutare Fișiere
Căsuța de căutare din bara de unelte; căutare recursivă după numele fișierului, fără distincție majuscule, max 100 rezultate, rezultate instant în bara laterală.
Căutare Conținut
- Caută în interiorul fișierelor; maximum 50 fișiere × 5 potriviri pentru fiecare fișier
- Rezultate grupate pe fișier cu insigna număr de potriviri
- Număr linie + conținut cu termenul căutat evidențiat în galben
- Clic pe rezultat → deschide fișierul și sare la linia exactă
- Doar extensii text; sarind fișierele binare
ExempluCaută nume de fișiere după invoice, apoi folosește căutarea în conținut pentru API_KEY ca să găsești fișierele și liniile evidențiate care îl conțin.
Diff .bak
Fiecare salvare creează automat un .bak al versiunii anterioare în locația de backup activă. ↕ Diff .bak și restaurarea recunosc transparent atât backupurile de lângă fișier, cât și pe cele private, astfel încât schimbarea locației nu face inutilizabil un backup existent. Dacă un fișier este șters cu opțiunea de backup activă în modul Spațiu privat, copia oglindită rămâne în .tyrusmanager/backups și poate fi accesată cu ROOT ON.
Comparare Paralelă
- Fișier 1: fișierul curent din editor (automat)
- Fișier 2: clic pe orice fișier din bara laterală în timp ce panoul este deschis
- Statistici: +N adăugate / -N eliminate
- Codificare prin culori: modificat (chihlimbar/albastru) · adăugat (verde) · eliminat (roșu) · separator (închis)
- Derulare independentă pentru fiecare coloană
ExempluDupă editarea index.php, folosește Diff .bak pentru a compara fișierul curent cu versiunea salvată anterior înainte să decizi dacă restaurezi.
- Controale tipare: Prefix · Sufix · Găsește · Înlocuiește; toate pot fi combinate
- Numerotare automată: 001, 002, 003…
- Previzualizare live: nume vechi → nume nou pentru fiecare fișier. Câmpurile individuale pot fi editate.
- Numere modificate evidențiate în galben
- Toate redenumirile într-o singură operație cu detecție de conflicte
ExempluRedenumește un set selectat de imagini din IMG_*.jpg într-un pattern numerotat precum gallery_001.jpg, verifică previzualizarea, apoi aplică după ce conflictele sunt clare.
Jurnal de activitate
Fiecare acțiune este înregistrată cu marcă temporală, tipul acțiunii și calea fișierului. LOGIN și LOGOUT înregistrează și adresa IP. Jurnalul JSON privat este stocat în .tyrusmanager/.activity_log, păstrează ultimele 50 de intrări și poate fi golit din panoul Jurnal.
Jurnal de erori PHP
- Parsează format CI4 (
LEVEL - DATE --> MSG) și standard PHP ([date] PHP Fatal error:) formate log
- Reconstruiește trace-uri de stiva complete
- Grupate după severitate: Critic/Eroare · Avertisment · Notă/Info
- Restringe/extinde per grup
- Stack trace-uri afișate inline cu evidențierea APPPATH/SYSTEMPATH
- Ordine cronologică inversă
ExempluDacă o salvare eșuează, verifică jurnalul de activitate pentru acțiunea asupra fișierului și panoul de erori PHP pentru eroarea serverului înainte să schimbi permisiuni sau cod.
Root OFF (implicit); navigare limitată la rădăcina documentelor (public_html).
Root ON; navighează deasupra public_html spre rădăcina serverului. Acces la loguri, configurații și fișiere din afara rădăcinii web. Avertismentul este afișat ca notificare toast, iar butonul din antet se schimbă în 🔑 Root ON când este activ.
ExempluPăstrează ROOT OFF pentru lucrul obișnuit. Activează ROOT ON numai când ai nevoie intenționat de vizualizarea extinsă a rădăcinii sau de un backup privat oglindit, apoi dezactivează-l din nou.
Toate operațiunile folosesc manager.php?action=ACTION:
| API Backend | Descriere |
| list | Conținut director; nume, tip, mărime, modificat, cale, permisiuni |
| read | Conținut fișier (max 5MB) |
| readimage | Imagine ca URI base64 (jpg, png, gif, webp, svg, ico) |
| save | Salvează fișierul; creează automat backupul versiunii anterioare în locația activă |
| upload | Upload; moduri: întreabă / înlocuiește / copiază (auto-numerotate) |
| download | Descarcă un singur fișier prin HTTP |
| download-zip | Mai multe fișiere ca ZIP; construit prin tempnam, transmis în browser, șters imediat după |
| delete | Șterge recursiv fișiere/dosare; copia .bak opțională folosește locația de backup activă |
| rename | Redenumește; detectarea conflictelor, suprascriere forțată opțională |
| newfolder | Creează director (mkdir recursiv) |
| newfile | Creează fișier gol |
| zip | Creează arhivă ZIP pe server |
| zip-list | Conținut ZIP ca arbore ierarhic |
| unzip | Extrage arhivă ZIP completă |
| unzip-selective | Extrage elemente selectate cu eliminare inteligentă prefix |
| unzip-check | Preverificare conflicte extracție înainte de extracție |
| chmod | Schimbă permisiunile fișierului/dosarului |
| search | Căutare recursivă după numele fișierului (max 100 rezultate) |
| searchcontent | Text în interiorul fișierelor (max 50 fișiere × 5 potriviri) |
| diskusage | Utilizare disc; parcurge maximum 2 niveluri deasupra docroot, cu memorie cache de 30 de minute |
| diff | Fișier vs .bak cu context de 3 linii |
| compare | Diff paralel între orice două fișiere |
| lint | Analiză PHP/CSS/JS; răspuns structurat cu problemele detectate |
| errorlog | Parsează log-ul de erori PHP (format CI4 + standard) |
| clearerrorlog | Șterge fișierul de jurnal pentru erorile PHP |
| phpinfo | Info PHP parsat; versiune, extensii, setări |
| getfavorites | Listează căile adăugate la favorite |
| togglefavorite | Adaugă sau elimină din favorite |
| getlog | Intrări jurnal de activitate |
| clearlog | Curăță jurnalul de activitate |
| clearcache | Antet de purge LiteSpeed + ștergerea dosarului writable/cache CI4 |
| getdocroot | Calea rădăcinii documentelor de server |
| multirename | Redenumire în lot cu detecție conflicte |
ExempluInterfața folosește acțiuni precum read, save, zip-list, unzip-selective, diff și lint; acestea sunt acțiuni interne ale managerului, nu un API REST public pentru terți.
416 chei UI pentru fiecare limbă. Toate textele interfeței managerului sunt disponibile în EN / RO / DK.
- Schimbare fără reîncărcarea paginii;
switchLang() → applyUiLang() + loadFiles() + renderTabs()
- Toate elementele DOM actualizate: butoane, modaluri, placeholder-uri, cheatsheet (complet regenerat), sugestii ZIP, bara timeout
- Limba este păstrată în cookie și în fișierul privat
.tyrusmanager/.manager_config
- Comutator animat tip pilulă (desktop): glisare cubic-bezier, fără tranziție la inițializare pentru a evita flash
🇬🇧 English 🇷🇴 Romanian 🇩🇰 Danish
ExempluComută EN → RO → DK din antetul managerului: etichetele sunt rerandate fără reîncărcarea completă a paginii, iar limba selectată este păstrată.
| Punct de rupere | Comportament |
| < 425px | Jurnal ascuns, bara de disc ascunsă, butoane compacte de 8px, selector de limbă simplu |
| 425–599px | Jurnalul apare primul (order:-1) înainte de Erori |
| 600–1023px | Selector limbă static în antet (fără poziționare absolută) |
| 1024–1100px | Selector de limbă static, bară de unelte compactă |
| > 1100px | Layout desktop complet, cu selectorul animat de limbă centrat absolut |
- Sertar bara laterală; alunecă din stânga, overlay pentru închidere, se închide automat la deschidere fișier / ZIP / imagine, rămâne deschis la navigare în dosar
- Apăsare lungă 500ms; meniu contextual la poziția atingerii, feedback haptic prin
navigator.vibrate(30); mișcarea degetului anulează acțiunea
- Sistem de file; lățime maximă 90px, puncte de suspensie, închidere mereu vizibilă, derulare orizontală
- Diff/Comparare; ascuns sub 768px, unde spațiul este insuficient pentru vizualizarea split
ExempluPe telefon, deschide sertarul lateral, apasă lung pe un fișier pentru acțiunile contextuale, deschide-l într-o filă de editor și închide sertarul fără să schimbi fluxul de lucru desktop.
⌨
Comenzi Rapide de la Tastatură
| Scurtătură | Acțiune |
| Ctrl + S | Salvează fișierul curent |
| Ctrl/⌘ + K | Deschide paleta de comenzi |
| Ctrl + W | Închide fila curentă |
| Ctrl + Z | Anulează |
| Ctrl + Y | Refacere |
| Ctrl + F | Găsește în fișier |
| Ctrl + H | Găsește și înlocuiește |
| Ctrl + / | Comentează / decomentează linia |
| Tab | Indentează selecția |
| Ctrl + Space | Autocompletare manuală |
| Escape | Închide autocompletarea sau modalul |
| A+ / A− | Mărește / micșorează dimensiunea fontului |
| Right-click file | Meniu contextual |
| Right-click tab | Meniu contextual fila |
| Drag tab | Reordonează filele |
| Drag sidebar border | Redimensionează bara laterală |
| Double-click border | Resetează lățimea barei laterale la valoarea implicită |
| F1 | Deschide ghidul de comenzi rapide |
| Ctrl + Q | Analizează fișierul curent |
| Delete / Shift + Delete | Șterge selecția; Shift+Delete sare peste dialogul de confirmare |
ExempluFolosește Ctrl/⌘ + K pentru paleta de comenzi, Ctrl + S pentru salvare și Ctrl + Q pentru analiza fișierului activ fără să părăsești editorul.
- PHP 8.0 sau mai nou; versiunea actuală este testată până la PHP 8.4 inclusiv
- ZipArchive este necesar pentru crearea, navigarea și extragerea arhivelor ZIP
- Este necesar un director privat cu drept de scriere în afara rădăcinii web pentru starea managerului. Managerul creează automat
.tyrusmanager când este posibil; TYRUS_MANAGER_STORAGE poate defini o locație explicită.
- Fără Composer · Fără npm · Fără instalare de bază de date · Fără CDN terț în timpul rulării
ExempluO instalare minimă poate rula pe PHP 8.0+ cu spațiu privat cu drept de scriere. Crearea, navigarea și extragerea ZIP necesită suplimentar extensia PHP ZipArchive.
🛡
Compatibilitate cu scanerele de hosting
manager.php este un instrument legitim de administrare a serverului. Citirea și scrierea fișierelor, uploadurile, lucrul cu arhive, schimbarea permisiunilor, editarea codului sursă și diagnosticarea de server fac parte în mod normal din ceea ce a fost construit să facă. Unele scanere euristice de hosting clasifică software-ul după capabilități, astfel că un build oficial și nemodificat poate fi uneori etichetat drept instrument administrativ sau poate genera un fals pozitiv.
Integritatea release-ului oficial: buildul oficial este întreținut și testat direct de autor. Buildurile licențiate validează blocurile critice protejate față de versiunea canonică lansată în timpul verificărilor de licență. O etichetă atribuită de un scanner pe baza capabilităților nu schimbă originea sau integritatea unui release oficial nemodificat.
- Folosește sursa oficială: descarcă
manager.php direct de pe tyrus.dk, astfel încât să știi exact ce release și ce copie licențiată rulezi.
- Dacă un scanner îl etichetează: compară-l cu o copie oficială proaspăt descărcată și lasă verificarea de integritate a licenței să confirme blocurile critice protejate față de release-ul canonic.
- Compatibilitate cu hostingul: dacă furnizorul permite allowlist sau excluderi pentru instrumente administrative cunoscute, aplică excepția numai copiei oficiale verificate furnizate de Tyrus.
- Raportează compatibilitatea: dacă o copie oficială proaspăt descărcată este clasificată repetat de un scanner de hosting, trimite numele scannerului și eticheta detecției la angel@tyrus.dk, pentru ca nota de compatibilitate să poată fi urmărită și menținută actualizată.
Pentru transparență, cazul Hostinger este documentat separat. O clasificare inițială a scannerului a fost descrisă în termeni mai puternici, iar după o verificare ulterioară Hostinger a corectat formularea și a descris fișierul în categoria sa de instrument administrativ. Cronologia și corespondența completă sunt disponibile în dosarul cazului.
Citește cazul Hostinger documentat →
Pornește de la eroarea exactă afișată de manager. Verificările de mai jos leagă cele mai frecvente probleme de componenta care le controlează în realitate.
- Activarea eșuează: verifică domeniul afișat de manager, cheia completă și accesul HTTPS outbound din PHP. O cheie asociată domeniului nu este interschimbabilă între domenii diferite.
- Configurarea nu poate salva: verifică dacă PHP poate crea/scrie locația privată
.tyrusmanager sau setează TYRUS_MANAGER_STORAGE către o cale privată cu drept de scriere.
- Acțiunile ZIP nu sunt disponibile: activează extensia PHP
ZipArchive în același runtime care servește manager.php. PHP CLI și PHP-ul serverului web pot încărca extensii diferite.
- Backup într-o locație neașteptată: verifică Setări → Backupuri. În modul Auto, o probă
.bak expusă sau neverificată selectează intenționat spațiul privat.
- Revenire frecventă la autentificare: sesiunea autentificată expiră după 30 de minute de inactivitate. Folosește avertizarea/controlul de prelungire când editezi activ.
Răspunsuri scurte la deciziile care contează cel mai des înainte de instalare.
PHP File Manager este gratuit?
Da. Modelul actual al produsului este gratuit și asociat domeniului.
Are nevoie de Composer, npm sau bază de date?
Nu este necesar niciun manager de pachete și nicio instalare de bază de date. Produsul este distribuit ca un singur fișier PHP și își păstrează starea privată în fișiere pe server.
Poate fi mutată o licență pe alt domeniu?
Licența este asociată domeniului. Activarea și dezactivarea sunt operații explicite; nu presupune că o cheie emisă pentru un domeniu va valida pe alt domeniu fără legătură.
Backupurile sunt întotdeauna publice lângă fișierul editat?
Nu. Auto poate folosi backupuri lângă original sau spațiu privat în funcție de proba de protecție, iar modul Privat scrie întotdeauna backupurile noi în afara rădăcinii web publice.