# 📋 Resumen de Problemas y Soluciones - VPS

**Fecha:** Noviembre 2024  
**Script:** `bulk_create_cpanel4.sh`

---

## ❌ Problemas Identificados

### 1. **Composer se ejecuta con php-cgi** (Línea 436, 448)
```
Composer cannot be run safely on non-CLI SAPIs with register_argc_argv=On. Aborting.
```

**Causa:** El script ejecuta `composer` directamente, que resuelve a `php-cgi` en lugar de PHP CLI.

**Solución:** Ejecutar Composer con PHP CLI explícitamente:
```bash
# ❌ Incorrecto
composer --version
composer install

# ✅ Correcto
php /path/to/composer --version
php /path/to/composer install
```

### 2. **allow_url_fopen deshabilitado** (Línea 280-282)
```
The allow_url_fopen setting is incorrect.
Add the following to the end of your `php.ini`:
    allow_url_fopen = On
```

**Causa:** El instalador de Composer requiere `allow_url_fopen=On`.

**Solución:** Habilitar temporalmente con `-d`:
```bash
php -d allow_url_fopen=On composer-setup.php ...
```

### 3. **Error 500 al generar .env** (Línea 442, 449, 452)
```
Status: 500 Internal Server Error
Content-type: text/html; charset=UTF-8
```

**Causa:** Probablemente `php artisan key:generate` está usando `php-cgi`.

**Solución:** Usar PHP CLI explícitamente en todos los comandos `artisan`.

---

## ✅ Correcciones Aplicadas (Local)

### 1. `install_composer()` - Usar PHP CLI explícito

**Antes:**
```bash
sudo -u "$username" bash -c "$composer_bin --version 2>&1"
```

**Después:**
```bash
sudo -u "$username" bash -c "$php_cli $composer_bin --version 2>&1"
```

### 2. `install_composer()` - Habilitar allow_url_fopen

**Antes:**
```bash
$php_cli composer-setup.php --install-dir=$composer_dir --filename=composer
```

**Después:**
```bash
$php_cli -d allow_url_fopen=On composer-setup.php --install-dir=$composer_dir --filename=composer
```

### 3. `clone_repo_in_public_html()` - Composer install con PHP CLI

**Antes:**
```bash
$composer_bin install --no-interaction
```

**Después:**
```bash
$php_cli $composer_bin install --no-interaction
```

### 4. `generate_env_file()` - Artisan con PHP CLI

Ya estaba usando `$php_cli artisan key:generate`, pero verificar que se pase correctamente.

---

## 📤 Cómo Subir Script Corregido al VPS

### Opción 1: Desde Terminal Local

```bash
# Desde tu máquina local
cd /Applications/XAMPP/xamppfiles/htdocs/cd-system
scp scripts/bulk_create_cpanel4.sh root@72.61.45.136:/root/scripts/
# Ingresar contraseña cuando se solicite
```

### Opción 2: Copiar y Pegar Manualmente

1. Abrir `scripts/bulk_create_cpanel4.sh` en tu editor local
2. Copiar todo el contenido
3. En el VPS, editar el archivo:
   ```bash
   nano /root/scripts/bulk_create_cpanel4.sh
   ```
4. Pegar el contenido y guardar (Ctrl+X, Y, Enter)
5. Dar permisos de ejecución:
   ```bash
   chmod +x /root/scripts/bulk_create_cpanel4.sh
   ```

### Opción 3: Usar Git (si el script está en el repo)

```bash
# En el VPS
cd /root/scripts
git pull origin main  # o la rama correspondiente
chmod +x bulk_create_cpanel4.sh
```

---

## 🧪 Verificación Post-Corrección

Después de subir el script corregido:

```bash
# En el VPS
cd /root/scripts

# Verificar que el script tiene las correcciones
grep -n "php_cli.*composer_bin" bulk_create_cpanel4.sh
# Debe mostrar múltiples líneas

# Verificar allow_url_fopen
grep -n "allow_url_fopen=On" bulk_create_cpanel4.sh
# Debe mostrar al menos una línea

# Dar permisos
chmod +x bulk_create_cpanel4.sh

# Eliminar cuenta de prueba
whmapi1 removeacct username=cokecolo

# Re-ejecutar
./bulk_create_cpanel4.sh --json /tmp/mi-proyecto.json
```

---

## 📊 Estado Actual del Script en VPS

**Versión en VPS:** ❌ Antigua (sin correcciones)  
**Versión Local:** ✅ Corregida (con todas las mejoras)

**Diferencia clave:**
- VPS: Usa `$composer_bin --version` (falla con php-cgi)
- Local: Usa `$php_cli $composer_bin --version` (funciona)

---

## 🎯 Próximos Pasos

1. ✅ **Subir script corregido al VPS** (usar una de las opciones arriba)
2. ✅ **Eliminar cuenta de prueba:** `whmapi1 removeacct username=cokecolo`
3. ✅ **Re-ejecutar script:** `./bulk_create_cpanel4.sh --json /tmp/mi-proyecto.json`
4. ✅ **Verificar que Composer funciona:** Debe mostrar versión sin errores
5. ✅ **Verificar que composer install funciona:** Debe instalar dependencias
6. ✅ **Verificar que .env se genera:** Sin error 500

---

## 📝 Archivos de Documentación Relacionados

- `FIX-PHP-CLI-VPS.md` - Detección de PHP CLI
- `FIX-ALLOW-URL-FOPEN-COMPOSER.md` - Problema de allow_url_fopen
- `FIX-PHP-CGI-COMPOSER.md` - Problema de php-cgi vs PHP CLI

---

**Última actualización:** Noviembre 2024

