# Instalar ionCube en Laravel Herd en un mac Silicon

## Introducción
Hace poco que abandone el desarrollo con Laravel Sail tras la aparición de Laravel Herd. Pero hoy me enfrente a un tema del que no había mucha documentación. Era la necesidad de instalar las extensiones de Ioncube para el desarrollo de un Addon de WHMCS en entorno local.


## PHP e Ioncube en un Mac con chip Silicon M1/M2
Si escribo esto es porque a la fecha, 15/02/2024 el instalador de ionCube no funciona en el Mac.

### Versión de PHP 

WHMCS pese al año en que estamos sigue con soporte solo hasta PHP 8.1 y encima esta ofuscado con Ioncube, así que instale PHP 8.1 en Herd. 

Mi primera sorpresa fue que no se instalaba nada o no encontraba el path por lo que opte por instalar el PHP 8.1 como hago siempre en mac, via [Homebrew](https://brew.sh/).

```bash
brew install php@8.1
```

### Directorio de extensiones

Después saber donde esta el directorio de extensiones

```bash
php -i | grep extension_dir
extension_dir => /lib/php/extensions/no-debug-non-zts-20210902 => /lib/php/extensions/no-debug-non-zts-20210902
sqlite3.extension_dir => no value => no value
```

> Ojo, esta información es relativa al PHP que se ejecuta en el shell, así que por favor, en [Laravel Herd](https://herd.laravel.com/), deberemos poner como PHP global esa version, o en su defecto usar un `phpinfo()`en un documento visible en el public de nuestro proyecto, para ver el path para esa versión.

### Descarga de Ioncube

[Loaders](https://www.ioncube.com/loaders.php) 

Elegimos [macOS ARM M1 (arm64 64 bits) 13.0.2](https://downloads.ioncube.com/loader_downloads/ioncube_loaders_dar_arm64.tar.gz) que descargaremos y descomprimiremos.

Después debemos copiar o mover los ficheros de la extension a ese path.

```bash
sudo cp ioncube_loader_dar_8.1* /opt/homebrew/Cellar/php@8.1/8.1.27/lib/php/20210902/
sudo chown $(whoami):admin /opt/homebrew/Cellar/php@8.1/8.1.27/lib/php/20210902/ioncube_loader_dar_8.1*
```


### Incorporar el modulo zend al php.ini 

Desde Laravel Herd lo tenemos fácil.

Simplemente hay que ir al menu **Show php.ini** y seleccionar el `php.ini` de la versión que usamos.

Añadimos al final.

```ini
zend_extension=/opt/homebrew/Cellar/php@8.1/8.1.27/lib/php/20210902/ioncube_loader_dar_8.1.so
```

Salvamos el php.ini y reiniciamos Laravel Herd, y ya esta. Ya tenemos nuestra versión PHP 8.1 para FPM, preparada para ionCube.


##### Aviso
Esta documentación y su contenido, no implica que funcione en tu caso o determinados casos. 
También implica que tienes conocimientos sobre lo que trata, y que en cualquier caso tienes copias de seguridad.
El contenido el contenido se entrega, tal y como está, sin que ello implique ningún obligación ni responsabilidad por parte de [Castris](https://castris.com)

Si necesitas soporte profesional puedes contratar con Castris [soporte profesional](https://intranet.castris.com/store/soporte-profesional).