# 🔧 Fix Final: Detección de PHP CLI en cPanel

**Fecha:** Noviembre 2024  
**Problema:** `/usr/bin/php` es `php-cgi` en cPanel, no PHP CLI

---

## ❌ Problema Identificado

### Información del VPS

```bash
# Línea 546: which php
/usr/local/bin/php

# Línea 548-551: /usr/bin/php -v
PHP 8.2.29 (cgi-fcgi) (built: Sep 23 2025 00:00:00)
```

**Problema:**
- `/usr/bin/php` es `php-cgi` (muestra `cgi-fcgi`)
- El script detectaba `/usr/bin/php` como PHP CLI
- Esto causaba errores: "Composer cannot be run safely on non-CLI SAPIs"

---

## ✅ Solución Implementada

### 1. Priorizar `/usr/local/bin/php`

En cPanel, el PHP CLI correcto suele estar en `/usr/local/bin/php`, no en `/usr/bin/php`.

### 2. Verificar que NO sea `cgi-fcgi`

```bash
php_version=$(php -v 2>&1)
if echo "$php_version" | grep -q "cgi-fcgi"; then
    # Es php-cgi, saltar
    continue
fi
```

### 3. Verificar Funcionalidad

Ejecutar código PHP simple para asegurar que funciona:

```bash
if php -r 'echo "CLI_OK";' | grep -q "CLI_OK"; then
    # Es PHP CLI funcional
    echo "$php_path"
fi
```

---

## 📋 Función `find_php_cli()` Mejorada

```bash
find_php_cli() {
  local username="$1"
  
  # Orden de prioridad (cPanel)
  local php_paths=(
    "/usr/local/bin/php"  # Prioridad 1: PHP CLI típico en cPanel
    "/opt/cpanel/ea-php*/root/usr/bin/php"
    "/usr/bin/php"  # Último recurso (puede ser php-cgi)
  )
  
  for php_path in "${php_paths[@]}"; do
    for expanded_path in $php_path; do
      if [ -x "$expanded_path" ] && [ -f "$expanded_path" ]; then
        if ! echo "$expanded_path" | grep -q "cgi"; then
          # Verificar que NO sea cgi-fcgi
          local php_version=$(sudo -u "$username" bash -c "$expanded_path -v 2>&1")
          if echo "$php_version" | grep -q "cgi-fcgi"; then
            continue  # Es php-cgi, saltar
          fi
          # Verificar funcionalidad
          if sudo -u "$username" bash -c "$expanded_path -r 'echo \"CLI_OK\";' 2>&1" | grep -q "CLI_OK"; then
            echo "$expanded_path"
            return 0
          fi
        fi
      fi
    done
  done
  
  # Fallback
  echo "/usr/local/bin/php"
}
```

---

## 🔍 Verificación en VPS

### Comandos para verificar PHP CLI

```bash
# Verificar qué PHP está disponible
which php
# Debe mostrar: /usr/local/bin/php

# Verificar que NO sea cgi-fcgi
/usr/local/bin/php -v
# Debe mostrar: PHP X.X.X (cli) o similar, NO (cgi-fcgi)

# Verificar que funciona
/usr/local/bin/php -r 'echo "OK";'
# Debe mostrar: OK
```

---

## 📝 Notas

- **En cPanel:** `/usr/local/bin/php` suele ser el PHP CLI correcto
- **En sistemas normales:** `/usr/bin/php` suele ser PHP CLI
- **Siempre verificar:** Ejecutar `php -v` y buscar `cgi-fcgi` para descartar php-cgi

---

## 🎯 Resultado Esperado

Después de esta corrección, el script debería:
1. ✅ Detectar `/usr/local/bin/php` como PHP CLI
2. ✅ Instalar Composer correctamente
3. ✅ Ejecutar Composer sin errores
4. ✅ Generar `.env` sin error 500
5. ✅ Ejecutar migraciones y seeders

---

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

