Instalando PHP 7.1 no Raspbian Stretch

Os repositórios padrão do Raspbian não vem com o PHP 7.1. Para que nós possamos ter acesso a essa versão do PHP precisamos alterar o arquivo sources.list para o repositório que ainda está em “testing”. Para isso primeiramente vamos abrir o arquivo /etc/apt/sources.list e adicionar a seguinte linha:

deb http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi

Salve e feche o arquivo.

Depois de editado o arquivo agora devemos atualizar o sistema. Para isso usaremos os seguintes comandos:

$ sudo apt-get update && sudo apt-get upgrade

Se tudo ocorrer bem, o próximo passo será remover a versão antiga do PHP, com os seguintes comandos:

$ sudo apt-get remove '^php.*'

Com versões antigas removidas chegou a hora de instalar a versão 7.1 do PHP e junto alguns módulos. Utilizando os seguintes comandos:

$ sudo apt-get install php7.1 php7.1-cli php7.1-curl php7.1-json php7.1-opcache php7.1-common php7.1-readline

Pronto! Agora temos o PHP 7.1 instalado no nosso Raspbian.

Utilizando o Docker para seu projetos Laravel com Laradock


O laradock é um ambiente de desenvolvimento PHP completo para o docker, contendo algumas imagem docker pré-configuradas. Inicialmente o projeto foi focado em rodar os projetos Laravel no docker, mas veio evoluindo e agora começou a suportar outros projetos PHP como Symfony, CodeIgniter, WordPress, Drupal e outros.

Neste post vamos deixar-lo pronto para utilizar um projeto docker. Primeiramente para que possamos dar seguimento precisamos ter o docker e Git instalado e funcionando na máquina.

O primeiro passo agora é baixar o repositório do laradock no github com o seguinte comando:

$ git clone https://github.com/Laradock/laradock.git laradock

Esse comando baixará o conteúdo para uma pasta chamada laradock. O próximo passo é criar um arquivo .env espelhado pelo env-exemple (Copiando o env-exemple e colando com o nome de .env).

Realizado o passo anterior vamos subir o serviço com o seguinte comando:

$ docker-compose up -d nginx

Quando subimos o nginx automaticamente o PHP sobe pois o servidor web necessita dele.

Pronto o serviço está funcionando e agora podemos testar acessando:

http://localhost

ou no caso de quem estiver usando docker no  OSx acessando:

http://192.168.99.100

Antes de prosseguirmos é importante vermos um pouco sobre algumas configurações no arquivo .env. Algumas mais importantes são:

NGINX_HOST_HTTP_PORT=Porta que vai rodar
NGINX_HOST_HTTPS_PORT=Porta SSL

Existem outras configurações e possibilidades, mas não serão abordadas neste post. Agora vamos rodar uma arquivo teste de php para vermos se vai rodar e qual procedimento devemos tomar para funcionar.

O que vamos fazer primeiramente é criar uma pasta no mesmo nível que a pasta laradock, como mostra a imagem abaixo.

 

 

 

 

Agora que criamos as pasta vamos criar um arquivo chamado index.php dentro da pasta app/ com o seguinte conteúdo:

<!--?php
 
echo 'Teste laradock';
</pre-->

 

Depois de salvo o arquivo vamos abrir o arquivo default.conf que fica dentro da pasta laradock/nginx/sites/. Altere a linha  root /var/www/app;

Salve o arquivo e volte para a pasta laradock/ e digite os seguintes comando:

$ docker-compose down
 
$ docker-compose up

Pronto podemos testar acessando  http://localhost ou http://192.168.99.100 e verificando que funcionou corretamente.

Agora temos o laradock funcionando corretamente, e o próximo passo é criar/instalar um projeto Laravel.

Primeiramente vamos entrar no diretório do laradock com os seguintes comandos:

$ cd laradock/

Depois vamos subir o container workspace digitando o seguinte comando:

$ docker-compose exec workspace bash

Você notará que o terminal irá mudar, você entrará dentro do container. Algo parecido com o texto logo abaixo:

root@f74b81f6ed26:/var/www#

Se nos rodarmos o comando ls veremos que estamos um diretório anterior do laradock/ dentro desse container, ou seja, instalaremos o projeto Laravel no mesmo nível que o laradock.

Bem para instalarmos um projeto Laravel vamos rodar o seguinte comando:

# composer create-project --prefer-dist laravel/laravel teste-app-laravel

Pronto, depois que o composer baixa e instala temos uma pasta chamada teste-app-laravel/ no mesmo nível que o laradock.

Vamos sair do container utilizando Ctrl + q + p simultaneamente e partir para a criação do virtual host para acessa-lo. Crie um novo arquivo chamado teste-app-laravel.conf no seguinte diretório:

server {
 
    listen 80;
    listen [::]:80;
 
    server_name teste-app-laravel.local;
    root /var/www/teste-app-laravel/public;
    index index.php;
 
    location / {
         try_files $uri $uri/ /index.php$is_args$args;
    }
 
    location ~ \.php$ {
        try_files $uri /index.php =404;
        fastcgi_pass php-upstream;
        fastcgi_index index.php;
        fastcgi_buffers 16 16k;
        fastcgi_buffer_size 32k;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

Nessas linhas o que devemos atentar é nas linhas server_name e root, onde o primeiro é o nome do virtual host e o segundo é o caminho de onde está a aplicação Laravel. 

Com o terminal dentro da pasta laradock/ rode o seguinte comando:

$ docker-compose restart

Bem, e por último, vamos adicionar no virtualhost de nosso OS a configuração para que possamos acessar a aplicação através da url: teste-app-laravel.local em um navegador localmente. Para que funcione vamos abrir o arquivo de virtualhost /etc/hosts e adicionar a seguinte linha:

127.0.0.1 teste-app-laravel.local

Salve e feche o arquivo e pronto, feito isso temos nosso projeto Laravel funcionando corretamente.

Ambiente de Desenvolvimento PHP com o Docker Compose

Docker

Docker Compose é uma ferramenta para execução de aplicativos docker multi-containers o que nos ajuda muito a iniciar um ambiente inteiro com um comando somente.

Neste post vamos utilizar o Docker Compose para configurar um ambiente de desenvolvimento básico, com o PHP, Apache e MySQL.Vamos utilizar dois containers Docker, um para o PHP e Apache e outro para o banco de dados MySQL. Vamos utilizar imagens oficias do Docker Hub.

Primeiramente vamos criar o container para o servidor WEB. Para isso dentro de uma pasta vamos criar um arquivo chamado Dockerfile contendo as seguintes linhas:


Nos utilizamos uma imagem do repositório oficial, este vem com o PHP 5.6 e o apache. Além disso utilizamos um comando para executar (RUN) a instalação da extensão mysqli. Por hora vamos instalar somente esta extensão, caso queira instalar mais extensões de uma olhada na documentação da imagem que foi utilizada.

O próximo passo é criar um arquivo chamado docker-compose.yml onde teremos as configurações de nossos dois containers. Vamos inserir as seguintes linhas nele:

O próximo passo agora é criar a pasta www/ e um arquivo com o nome index.php dentro da pasta www/ com o seguinte código:

Agora vamos colocar para rodar com o comando docker-compose up. Com este comando será mostrado em um modo verbose, ou seja, cuspindo todas as informações no terminal. Caso queira rodar em segundo plano bastar utilizar o seguinte comando: docker-compose up -d

Este post é o basico do que se pode fazer com o docker, mais com esse básico já podemos ter nosso ambiente de desenvolvimento rodando rapidamente e totalmente independente de nossa maquina.

Fazendo deploy com Deployer

deployer

 

Deployer é um pacote em PHP que tem como características realizar o deploy de aplicações e como principal vantagem a economia de tempo, melhor desempenho e desenvolvimento.

Neste post vamos desde do primeiro passo a instalação ate a execução do deploy em um servidor, tudo em um ambiente linux, no meu caso a distribuição Debian. Primeiramente precisamos baixar o arquivo .phar disponível no site do projeto.

Download do deployer.phar

Depois de realizado o download vamos move-lo e para a pasta /usr/local/bin e conceder permissão de execução com o seguinte comando:

$ mv deployer.phar /usr/local/bin/dep
$ chmod +x /usr/local/bin/dep

Depois deste passo teste o comando dep no terminal e veja se aparece mais ou menos como a tela abaixo.

Comando dep

O próximo passo é a criação do arquivo deploy.php onde setaremos algumas configurações para que possamos executar nosso delpoy da melhor maneira. No nosso casso vamos realizar o acesso via identityFile a um servidor e passar os arquivos de uma branch especifica de um repositório git.

<?php require 'recipe/symfony.php'; 
server('prod', '10.10.10.213')->user('byteslv')
->identityFile('/home/btllv/.ssh/id_rsa.pub', '/home/btllv/.ssh/id_rsa')
->env('deploy_path', '/var/www/html')
->stage('production');
 
set('repository', 'git@github.com:usuario/tests.git');
env('branch', 'master');
 
task('deploy:vendors', function () {
});
 
task('deploy:assetic:dump', function () {
});
 
task('deploy:cache:warmup', function () {
});

Pronto agora podemos executar nosso comando pra realizar o deploy na nossa maquina de production. Para rodar basta utilizar o seguinte comando:

$ dep deploy production

O processo começara, e tudo dando certo aparecerá  uma tela mais ou menos como esta abaixo.

dep

Processo realizado com sucesso!

É possível ir bem alem do que mostrei aqui. Entre no site do projeto e veja sua documentação e veja como o que mais pode se fazer com o Deployer.

http://deployer.org/

 

Instalando o XAMPP no linux

O XAMPP simplificando, é um servidor web contendo o Apache, Mysql, PHP, Perl e outros. Para instalar, primeiramente temos que realizar o download do arquivo no site do projeto https://www.apachefriends.org/download.html.

Depois de realizado o download entre no terminal e digite os seguintes códigos:

$ cd Downloads
$ su
 
# chmod 755 xampp-linux-x64-1.8.2-6-installer.run
# ./xampp-linux-x64-1.8.2-6-installer.run

Iniciará uma tela de instalação, clique em Next verificando se deseja a configuração apresentada.

xampp1

Depois de finalizado coloque o servidor para iniciar com o seguinte comando:

#sudo  /opt/lampp/lampp start

Para reniciar ou parar os serviços utilize os seguintes comandos:

#sudo  /opt/lampp/lampp restart
 
#sudo  /opt/lampp/lampp stop

Busca palavras repetidas em arquivo com PHP

Para saber se dentro de algum arquivo existem palavras repetidas, basta fazer uma busca utilizando um foreach, depois de separar as palavras com outro foreach. Veja o código abaixo:

$file = "dados.txt";
$contents = preg_split("/[\s,]+/", implode("", file($file)));
 
foreach ($contents as $palavra) {
  $ar[$palavra]++;
}
echo "Palavras duplicadas
 
 
";
 
foreach ($ar as $palavra =&gt; $c_palavra) {
  if($c_palavra &gt; 1){
    print "Palavra: $palavra 
";
    print "Numero de ocorrencias: $c_palavra 
";
  }
}

Verifica se Arquivo permite leitura, escrita e existe com PHP

Algumas vezes precisamos verificar se um arquivo permite somente leitura, ou somente escrita, ou simplesmente se ele existe. Para isto usamos algumas funções no PHP, que são elas a: is_readable, is_writable e file_exists. Veja os exemplos abaixo:

// Verifica se o arquivo permite leitura.
$file = "arquivo.php";
if (is_readable($file)) {
  echo "Arquivo permite leitura";
}
else {
  echo "Arquivo não permite leitura";
}
 
// Verifica se arquivo permite escrita.
$file = "arquivo.php";
if (is_writable($file)) {
  echo "O arquivo permite escrita";
}
else {
  echo "O arquivo não permite escrita";
}
 
 
// Verifica se Arquivo existe.
$file = "arquivo.php";
if (file_exists($file)) {
  echo "O arquivo existe";
}
else {
  echo "o arquivo não existe";
}

Gerenciando dependências com o Composer

Gerenciador de Composer
Gerenciador de Dependência

Neste post não vou abordar o que é o Composer, mais sim como instalar e utilizar ele no seu projeto para gerenciar suas dependências.

Primeiro passo é instalar o Composer, existe algumas formas de instalar o mesmo, qualquer dúvida só acessar o site do projeto aqui.

 

NO LINUX

No meu caso utilizei o comando abaixo para instalar o Composer:

1
php -r "readfile('https://getcomposer.org/installer');" | php

Será realizado o download do arquivo composer.phar.

1
2
3
4
5
All settings correct for using Composer
Downloading...
 
Composer successfully installed to: ./composer.phar
Use it: php composer.phar

No meu caso eu instalei ele para que eu pudesse utiliza-lo em qualquer projeto, numa forma global. Para isso utilizei esse comando (Para plataforma UNIX):

1
# sudo mv composer.phar /usr/local/bin/composer

Pronto o composer agora está instalado.

NO OS X

Para instalar no OS X é mais simples, basta fazer o download do Composer :

1
curl -sS https://getcomposer.org/installer | php

depois de realizado o download, mova o arquivo para a pasta /usr/bin com o seguinte comando:

1
sudo mv composer.phar /usr/bin/

No meu caso gosto de deixar no modo universal, para poder trabalhar com o composer em qualquer projeto, para isto basta criar um alias, utilizando o VIM para acessar o arquivo e inserir uma linha.
Para acessar o arquivo digite o seguinte comando:

1
vim ~/.bash_profile

Depois acrescente a seguinte linha:

1
alias composer="php /usr/bin/composer.phar"

Pronto agora o composer está  instalado.

Caso o procedimento acima não funcionar utilize este comando:

1
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer

Este último comando realiza todo o processo dito anteriormente.

UTILIZANDO

Para utiliza-lo basta criar um arquivo composer.json no seu projeto contendo quais dependências você deseja utilizar, no nosso exemplo utilizei o silex e o doctrine :

1
2
3
4
5
6
7
{
    "require": {
        "silex/silex": "1.0.*",
        "doctrine/dbal": "2.2.*"
    },
    "minimum-stability": "dev"
}

Para baixar as dependencias acesse pelo terminal a pasta de seu projeto e execute o seguinte comando:

1
composer install

Pronto agora basta esperar terminar de baixar os pacotes e utiliza-los.

Instalndo e ativando o Curl PHP 5 no Debian

Quando ativamos o PHP no nosso sistema, ele não vem com alguns pacotes. Para habilitarmos estes pacotes precisamos realizar alguns passos.

Primeiro vamos baixar o pacote do php-curl, utilizando o seguinte comando:

1
# sudo apt-get install php5-curl

Depois de instalado, so basta da um restart no apache com o comando abaixo:

1
# sudo /etc/init.d/apache2  restart

Pronto!