# Instalando ionCube Loader no Ubuntu 18.04 ou 20.04

Alguns Web Panels, como TinyCP, não possuem funcionalidade para instalação de plugins não nativos no repositório PHP, ou há casos em que o gerenciamento do Apache é feito via CLI, sem um Web Panel. Nestes casos, você deverá fazer o serviço de instalação manualmente, o que acaba sendo bem trabalhoso. Neste tutorial darei um passo a passo para instalar a extensão ionCube Loader.

### O que é a extensão ionCube Loader?

O IonCube Loader é uma extensão para o PHP capaz de decodificar e executar arquivos nos quais foram codificados através do próprio IonCube. Essa extensão visa a proteção do código-fonte de arquivos escritos em PHP e é amplamente utilizado em sistemas com intuitos e licenças comerciais.

### Requisitos e conhecimentos mínimos

Para efetuar o passo a passo de instalação você deve antes de tudo duas informações importantes do ambiente:

- Saber criar o arquivo do PHPInfo ou saber versão e diretórios do PHP do seu ambiente.
- Ter acesso direto à instância do Ubuntu via SSH. (Putty ou Bitvise)

Tendo a versão e os acessos, bora iniciar o processo de instalação.

### Avaliando ambiente

Primeiro de tudo, afim de entender como o ambiente do PHP trabalha no seu site, crie o “**PHPInfo**” no diretório raiz do seu site. Lá teremos as informações que coletaremos e por lá saberemos quando o ionCube está efetivamente carregado.

Uma vez dentro do PHPInfo, precisamos saber onde que está o arquivo de configuração do PHP utilizado, como mostrado abaixo:

![PHPInfo mostrando a localização do php.ini](https://cdn.hashnode.com/res/hashnode/image/upload/v1650133222084/DZRdRn5xp.png)

Neste caso, o PHPInfo mostra que o domínio usa **PHP7.2-FPM**, então precisaremos posteriormente editar o **/etc/php/7.2/fpm/php.ini** para carregar o arquivo do ionCube. No caso do seu ambiente sempre anote o que aparece no “**Loaded Configuration File**”, ele é onde está carregando o php.ini que alteraremos posteriormente.

Ainda no PHPInfo, precisamos saber onde está sendo carregado os plugins do seu ambiente, afinal, é onde colocaremos o ionCube Loader para que ele seja carregado. Vá até a sessão “**Core**” do PHPInfo e anote o **extension_dir** no ambiente:

![PHPInfo, no módulo Core, mostrando o caminho do extension_dir](https://cdn.hashnode.com/res/hashnode/image/upload/v1650133301476/O6rH4kPwV.png)

Com isso, temos as duas informações que precisamos para o próximo passo:

```
Loaded Configuration File = /etc/php/7.2/fpm/php.ini
extension_dir = /usr/lib/php/20170718
```

### Baixando e instalando ionCube Loader

Agora precisaremos baixar ele dentro da instância, então vamos conectar via SSH.

Uma vez conectado dentro da instância, faça o seguinte comando para baixar o ionCube:

```
sudo wget http://downloads3.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz
```

![Executando o comando para baixar o ionCube](https://cdn.hashnode.com/res/hashnode/image/upload/v1650133443940/DzXZir5Hu.png)

Ele irá baixar o arquivo compactado, então use o comando tar para descompactar-lo:

```
sudo tar xvfz ioncube_loaders_lin_x86–64.tar.gz
```

![Executando o comando tar para descompactar o arquivo.](https://cdn.hashnode.com/res/hashnode/image/upload/v1650133484772/0RMg5uHPM.png)

Ele irá gerar uma pasta ionCube com vários arquivos para diferentes versões de PHP, no nosso caso usaremos a correspondente à versão 7.2 do PHP.

Devemos copiar o arquivo para a pasta do **extension_dir** (/usr/lib/php/20170718) do PHP no nosso ambiente que anotamos acima.

Com isso, vamos copiar o arquivo ioncube_loader_lin_7.2.so (onde 7.2 corresponde ao numero do PHP utilizado) para a pasta mencionada acima através do Ubuntu com o comando cp (cp origem destino):

```
sudo cp ~/ioncube/ioncube_loader_lin_7.2.so /usr/lib/php/20170718
```

Como todo ambiente Linux faz, sem output de mensagem = concluído sem erros.

![Copiando o plugin para a pasta do PHP 7.2](https://cdn.hashnode.com/res/hashnode/image/upload/v1650133585600/F9q_CjROU.png)

Agora vamos editar o php.ini. Este arquivo é o que apareceu no **Loaded Configuration File** do PHPInfo. Então vamos nele:

```
sudo nano /etc/php/7.2/fpm/php.ini
```

No final do documento adicione esta linha abaixo:

```
zend_extension = "/usr/lib/php/20170718/ioncube_loader_lin_7.2.so"
```

Lembrando que essa linha altera de acordo com cada versão do PHP que você utilizar.

![Adicionando o zend_extension no final do arquivo php.ini](https://cdn.hashnode.com/res/hashnode/image/upload/v1650133673307/_gn2ReuyH.png)

Após isso isso, faça **CTRL+X**, depois **Y** e **ENTER** para salvar essa alteração no php.ini.

Para que o PHP carregue esse plugin agora, devemos reiniciar o serviço Web e o PHP7.2-FPM. para isso execute os comandos abaixo:

```
sudo systemctl restart php7.2-fpm.service 
sudo systemctl restart apache2.service
```

![Reiniciando o serviço WEB + PHP](https://cdn.hashnode.com/res/hashnode/image/upload/v1650133766670/2ewGK2-iB.png)

Se ambos serviços não retornaram erros, significa que está tudo certo e nada resolvido. Agora entrando novamente no PHPInfo, na metade da página mostrará status sobre o ionCube, o que significa que ele carregou corretamente:

![ionCube Loader carregado no PHPInfo](https://cdn.hashnode.com/res/hashnode/image/upload/v1650133790491/GUUWIUspU.png)

Caso não apareça, verifique novamente os comandos e veja se tudo foi executado nessa ordem. Lembre-se, se o PHP for diferente (Seja PHP-FPM ou não), os comandos, diretórios e o plugin do ionCube mudam, então fiquem ligados neste ponto.

**É isso pessoal, até a próxima!**
