# RTX NexTV v3.5.0 - Compatibilidade PHP 8.4 & cPanel

## 📋 Versões Suportadas

✅ **PHP 7.0+** (Legacy support)  
✅ **PHP 7.4** (LTS)  
✅ **PHP 8.0**  
✅ **PHP 8.1**  
✅ **PHP 8.2**  
✅ **PHP 8.3**  
✅ **PHP 8.4** (Latest)  
✅ **cPanel Hosting**  

---

## 🔧 Compatibilidades Implementadas

### 1. **Type Declarations (PHP 8.4)**
```php
// ✅ Compatível com PHP 8.4
function sanitize_string(mixed $value): string {
    if (!is_string($value)) {
        $value = strval($value);
    }
    return htmlspecialchars(strip_tags(trim($value)), ENT_QUOTES, 'UTF-8');
}

// ✅ Compatível com PHP 7.0+
$value = isset($config['key']) ? $config['key'] : 'default';
$value = $config['key'] ?? 'default'; // PHP 7.0+
```

### 2. **Error Handling (Throwable)**
```php
// ✅ PHP 7.0+
try {
    // código
} catch (Throwable $e) {  // Funciona em todas versões
    error_log($e->getMessage());
}
```

### 3. **Session Management**
```php
// ✅ PHP 8.4 compatible
$status = session_status();
if ($status === PHP_SESSION_NONE) {
    @session_start();
}
```

### 4. **String Handling**
```php
// ✅ PHP 8.0+
if (str_ends_with($url, '.m3u')) {
    // PHP 7.0 fallback disponível
}

// ✅ PHP 7.0+
if (substr($url, -4) === '.m3u') {
    // Always works
}
```

---

## 📦 Instalação em cPanel

### Passo 1: Fazer Upload do Arquivo

```bash
# Via FTP/SFTP ou cPanel File Manager
1. Acesse seu painel cPanel
2. Vá para "File Manager"
3. Navegue para public_html
4. Upload o arquivo rtxtestx_updated.zip
5. Clique direito → "Extract"
```

### Passo 2: Definir Permissões

```bash
# Via SSH (se disponível)
cd ~/public_html/rtxtestx

# Permissões para PHP executar
chmod 755 mac_tracking.php
chmod 755 m3u_manager.php
chmod 755 main.php
chmod 755 index.php
chmod 755 admin.php

# Banco de dados
chmod 666 api/.db.db
chmod 755 api/

# Diretórios
chmod 755 includes/
chmod 755 includes/m3u/
chmod 755 cache/
```

### Passo 3: Verificar Versão PHP no cPanel

```bash
# Via cPanel:
1. Abra "Select PHP Version"
2. Selecione PHP 8.4 (ou 8.3, 8.2, etc.)
3. Verifique extensões:
   - SQLite3 ativada ✓
   - curl ativada ✓
   - sessions ativada ✓
```

### Passo 4: Testar Instalação

Acesse no navegador:
```
https://seu-dominio.com/rtxtestx/index.php
```

---

## 🔍 Verificação de Compatibilidade

### Criar arquivo `php_check.php`

```php
<?php
// Salvar como: rtxtestx/php_check.php

echo "=== PHP Compatibility Check ===\n\n";

// Versão
echo "PHP Version: " . PHP_VERSION . "\n";

// Extensões
$extensions = [
    'sqlite3' => extension_loaded('sqlite3'),
    'curl' => extension_loaded('curl'),
    'sessions' => extension_loaded('session'),
    'json' => extension_loaded('json'),
];

foreach ($extensions as $ext => $loaded) {
    echo "Extension $ext: " . ($loaded ? "✓" : "✗") . "\n";
}

// Permissões
$dirs = [
    'api' => is_writable('./api/'),
    'cache' => is_writable('./cache/'),
    'includes' => is_readable('./includes/'),
];

echo "\nDirectory Permissions:\n";
foreach ($dirs as $dir => $writable) {
    echo "  $dir: " . ($writable ? "✓ Writable" : "✗ Not writable") . "\n";
}

// Database test
try {
    $db = new SQLite3('./api/.db.db');
    echo "\n✓ SQLite3 connection successful\n";
} catch (Exception $e) {
    echo "\n✗ SQLite3 connection failed: " . $e->getMessage() . "\n";
}

// String functions test
echo "\nString Functions:\n";
echo "  str_ends_with: " . (function_exists('str_ends_with') ? "✓" : "✗") . "\n";
echo "  str_starts_with: " . (function_exists('str_starts_with') ? "✓" : "✗") . "\n";

// Session test
if (session_status() === PHP_SESSION_NONE) {
    @session_start();
}
echo "  Sessions: " . (session_status() === PHP_SESSION_ACTIVE ? "✓" : "✗") . "\n";
?>
```

Acesse: `https://seu-dominio.com/rtxtestx/php_check.php`

---

## 🚀 Recursos Compatíveis com cPanel

### FTP/SFTP Upload
✅ Suportado - Faça upload do ZIP e extraia

### Gerenciador de Arquivo cPanel
✅ Suportado - Upload e extract diretamente

### SSH Terminal
✅ Suportado - Permissões via chmod

### Seletor de Versão PHP
✅ Suportado - Alterne entre versões 7.0-8.4

### Instalador de Extensões
✅ Suportado - SQLite3, cURL já vêm inclusos

### Gerenciador de Banco de Dados
✅ Suportado - Acesse via SQLite (não MySQL)

---

## 🛠️ Troubleshooting cPanel

### Problema: "Extension sqlite3 not enabled"
**Solução:**
```bash
1. cPanel → Select PHP Version
2. Selecione sua versão PHP
3. Scroll para baixo em "Extensions"
4. Marque "sqlite3"
5. Clique "Save"
```

### Problema: "Permission denied" em api/.db.db
**Solução:**
```bash
# Via SSH
chmod 666 /home/seu-usuario/public_html/rtxtestx/api/.db.db
chmod 777 /home/seu-usuario/public_html/rtxtestx/api/

# Via cPanel File Manager
1. Clique direito no arquivo
2. "Change Permissions"
3. Defina para 666
```

### Problema: "Session not working"
**Solução:**
```bash
# Verificar configuração no php.ini via cPanel
1. cPanel → MultiPHP INI Editor
2. Procure por "session.save_path"
3. Certifique-se de que /tmp/ existe e é writable
4. Marque "session.auto_start" = Off (segurança)
```

### Problema: "Database locked"
**Solução:**
```bash
# SQLite3 é single-writer, multi-reader
# Se receber erro de "database locked":
1. Verifique se há outro processo usando a DB
2. Aguarde alguns segundos e tente novamente
3. Se persistir: backup e recriar

# Via SSH
cp api/.db.db api/.db.db.backup
rm api/.db.db
# A tabela será recriada automaticamente na próxima requisição
```

---

## 📝 Diferenças Python 7.0 vs 8.4

### Null Coalescing Operator (??)
```php
// PHP 7.0+ (usado no código)
$value = $_GET['key'] ?? 'default';
$value = isset($config['debug']) ? $config['debug'] : 0;
```

### Match Expression (PHP 8.0+)
```php
// PHP 8.0+ (não usado, mantém compatibilidade)
// match($status) { ... } - usar if/switch ao invés
```

### Union Types (PHP 8.0+)
```php
// PHP 8.4 suportado (mas não obrigatório)
// function getName(int|string $id): string { }
// Usamos mixed para compatibilidade
```

### Named Arguments (PHP 8.0+)
```php
// PHP 8.0+ não usado, usa posicionais
// add_m3u_list(title: $title, ...) - não usar
```

---

## 🔐 Segurança cPanel

### 1. Proteger arquivos de configuração
```bash
# .htaccess (criar em raiz)
<FilesMatch "\.(ini|conf|json)$">
    Order allow,deny
    Deny from all
</FilesMatch>
```

### 2. Desabilitar acesso direto a arquivos
```bash
# /api/.htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(.*)$ - [L]
```

### 3. SSL/HTTPS (obrigatório)
```bash
# cPanel AutoSSL faz isso automaticamente
# Certifique-se de usar HTTPS nos formulários
```

### 4. Rate Limiting (via cPanel)
```bash
# cPanel → ModSecurity
# Ativa proteção contra brute force automaticamente
```

---

## 📊 Performance cPanel

### Recomendações
- **PHP Version**: Use 8.3 ou 8.4 para melhor performance
- **Memory Limit**: Defina 256MB (padrão)
- **Max Execution Time**: 300 segundos (padrão)
- **Upload Size**: 100MB (recomendado)

### Monitorar em cPanel
```bash
1. cPanel → Resource Usage
2. Veja CPU, RAM, Inodes
3. Aumente limite se necessário
```

---

## 🔄 Atualização de Versão PHP

### Migrar de PHP 7.4 para 8.4

```bash
# Via cPanel
1. cPanel → Select PHP Version
2. Escolha "8.4"
3. Clique "Save"
4. Aguarde 2-3 minutos
5. Teste a aplicação

# Sem downtime (deve ser automático)
```

### Se algo quebrar
```bash
# Voltar para versão anterior
1. cPanel → Select PHP Version
2. Escolha "8.3" (ou versão anterior)
3. Clique "Save"
4. Tudo será rollback em 2-3 minutos
```

---

## ✅ Checklist Pós-Instalação

- [ ] Arquivo extraído em `/public_html/rtxtestx/`
- [ ] Permissões definidas: 755 (arquivos), 666 (DB)
- [ ] SQLite3 extensão ativada no cPanel
- [ ] PHP 8.4 (ou 8.3) selecionado no cPanel
- [ ] HTTPS/SSL configurado
- [ ] Teste via: `https://seu-dominio.com/rtxtestx/`
- [ ] Credenciais padrão funcionando (superadmin)
- [ ] Formulários criando/editando dados
- [ ] API respondendo em `/api/api_tracking.php`
- [ ] Mac tracking funcionando
- [ ] M3U Lists funcionando
- [ ] DNS Bulk update funcionando

---

## 🚨 Problemas Comuns

| Problema | Causa | Solução |
|----------|-------|---------|
| 404 Not Found | Arquivo não extraído | Verificar path completo |
| Permission Denied | Permissões erradas | chmod 755/666 |
| SQLite Error | DB corrompido | Remover .db.db, recriar |
| Session Lost | Timeout | Aumentar session.gc_maxlifetime |
| Slow Loading | Hosting lento | Contatar suporte cPanel |

---

## 📞 Suporte cPanel

Se encontrar problemas:

1. **Ticket de Suporte cPanel**: cPanel → Help → Contact Support
2. **Community**: https://forums.cpanel.net
3. **Documentação**: https://docs.cpanel.net

---

## 📄 Versão e Data

- **Sistema**: RTX NexTV v3.5.0
- **Compatibilidade**: PHP 7.0 até 8.4
- **cPanel Ready**: ✅ Yes
- **Data**: 06/08/2024
- **Status**: Production Ready ✅

---

**Desenvolvido com compatibilidade total para cPanel e PHP 8.4** 🚀
