---
# System prepended metadata

title: Instalação do PHP (Ubuntu)
tags: [tutorial]

---

---
tags: tutorial
---
Instalação do PHP (Ubuntu)
=====================

Instalação do Apache:
```bash
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install -y apache2
sudo ufw allow in "Apache Full"
```

Instalação do PHP 8.1
```bash
sudo apt install -y php8.1 libapache2-mod-php8.1 php8.1-curl php8.1-gd php8.1-mbstring php8.1-mysql php8.1-xml php8.1-xmlrpc php-xdebug php8.1-zip php8.1-imap
```

Versões antigas
```bash
sudo apt install -y php5.6 libapache2-mod-php5.6 php5.6-curl php5.6-gd php5.6-mbstring php5.6-mcrypt php5.6-mysql php5.6-xml php5.6-xmlrpc php-xdebug php5.6-zip php5.6-imap
sudo apt install -y php7.0 libapache2-mod-php7.0 php7.0-curl php7.0-gd php7.0-mbstring php7.0-mcrypt php7.0-mysql php7.0-xml php7.0-xmlrpc php-xdebug php7.0-zip php7.0-imap
sudo apt install -y php7.1 libapache2-mod-php7.1 php7.1-curl php7.1-gd php7.1-mbstring php7.1-mcrypt php7.1-mysql php7.1-xml php7.1-xmlrpc php-xdebug php7.1-zip php7.1-imap
sudo apt install -y php7.2 libapache2-mod-php7.2 php7.2-curl php7.2-gd php7.2-mbstring php7.2-mysql php7.2-xml php7.2-xmlrpc php-xdebug php7.2-zip php7.2-imap
sudo apt install -y php8.0 libapache2-mod-php8.0 php8.0-curl php8.0-gd php8.0-mbstring php8.0-mysql php8.0-xml php8.0-xmlrpc php-xdebug php8.0-zip php8.0-imap
```

This will, and should, return a "does not exist!" message.
```bash
sudo a2dismod php8.1
```
This will, and should, return a "already enabled" message.
```bash
sudo a2enmod php8.1
sudo systemctl restart apache2
```

Instalando o Composer
---------------------

```bash
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
```

Trabalhando com várias Versões do PHP
-------------------------------------
Eventualmente será necessário trabalhar com versões diferentes do php. Para isso, segue um [Tutorial](https://sempreupdate.com.br/como-instalar-versoes-diferentes-do-php-5-6-7-0-e-7-1-no-ubuntu/) com um passo a passo para configurar versões diferentes em um mesmo ambiene.

Aqui talvez sejá interessante criar um programa em bash ou python para efetuar os comandos com mais facilidade.

Configurando o XDebug
---------------------

```ini
xdebug.remote_enable = 1
xdebug.remote_port = 9000
xdebug.idekey = PHPSTORM
xdebug.show_error_trace = 1
xdebug.remote_autostart = 0
xdebug.file_link_format = phpstorm://open?%f:%l
```

Configurando o APACHE
---------------------

Configuração do Apache para um Virtual Host local
```xml
<VirtualHost *:80>
    ServerName lab.local
    ServerAdmin webmaster@localhost
    DocumentRoot  /home/mario/sandbox/lab/
    ErrorLog ${APACHE_LOG_DIR}/lab-error.log
    CustomLog ${APACHE_LOG_DIR}/lab-access.log combined
    <Directory  /home/mario/sandbox/lab/>
        Options Indexes FollowSymLinks
        DirectoryIndex index.php
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>
```

Lembrando de sempre que um novo arquivo for adicionado ao diretório `/etc/apache2/sites-available`, ele deve ser importado com o comando:
```bash
sudo a2ensite <nome_do_arquivo.conf>
```
