Skip to content

Category Archives: shell script

Caçando erros de sintaxe em sistemas PHP

06-Jun-08

Como o PHP não é uma linguagem compilada, grande parte dos bugs de um sistema só são percebidos (e corrigidos) em ambiente de produção. Isso acontece principalmente se você mantém um sistema grande, pois se torna difícil validar todos os arquivos que são enviados para ambiente produção em cada nova release.

Porém, usando o PHP CLI (Command Line Interface) você consegue validar a sintaxe de um sistema inteiro de uma forma simples, fácil e rápida. Se você ainda não tem o PHP CLI instalado, você pode instalá-lo no Ubuntu (ou Debian) da seguinte forma:


$ sudo aptitude install php5-cli

Pronto, agora você tem acesso ao PHP via linha de comando:


$ php -r 'echo "Hello World!";'
Hello World!

Aproveite também dar uma olhada em todas as opções do PHP CLI porque ele tem bastante coisa legal e que podem ser muito úteis em vários casos. Uma dessas opções é o validador de sintaxe, ou seja, a opção -l.

Veja o exemplo de um arquivo sem problemas de sintaxe:


$ nl helloworld.php
     1  <?php
     2  echo 'Hello ';
     3  echo 'World!';
     4  ?>
$ php -l helloworld.php
No syntax errors detected in helloworld.php

E agora o mesmo arquivo com erros de sintaxe


$ nl helloworld.php
     1  <?php
     2  echo 'Hello '   // erro de sintaxe, faltando um ";" aqui
     3  echo 'World!';
     4  ?>
$ php -l helloworld.php

Parse error: syntax error, unexpected T_ECHO, expecting ',' or ';' in helloworld.php on line 3
Errors parsing helloworld.php

Agora você pode usar um pouco de bash junto com essa opção de checagem de sintaxe para validar todo o seu sistema PHP de uma só vez, como mostrado a seguir


$ find /var/www/meu-site -name *.php -exec php5 -l {} ";"

Claro que isso não garante que não hajam erros de lógica no seu sistema, mas encontrar e corrigir todos os erros de sintaxe antes de enviar o código para o cliente já um grande passo. É possível ainda criar um script muito mais elaborado do que o comando mostado acima, mas a idéia desse post era só mostrar o conceito mesmo.

É isso ae, abraços.

Meus 10 comandos mais rodados no Linux

17-Jan-08

Eu sei que esse meme já é meio antigo, mas é legal saber os comandos que você mais usa


afurlan@einstein:~$ history | awk '{print $2}' | awk 'BEGIN {FS="|"} {print $1}' | sort | uniq -c | sort -rn | head -10
    130 l
     72 vim
     46 cd
     34 rm
     28 ll
     20 fg
     15 mv
     14 for
      9 find
      7 du

Utilizando o comando “service” no Ubuntu

20-Dec-07

Uma das coisas legais que existem no Mandriva e que eu sempre senti falta no Ubuntu é o comando service. O comando service não possui uma função propriamente dita, ele serve apenas como alias para o /etc/init.d e no Madriva já vem configurado por default. Pode até ser frescura minha mas, além de tornar mais claro, é melhor manipular os serviços do linux com


$ service apache2 reload

do que o usando o famoso


$ /etc/init.d/apache2 reload

Durante algum tempo eu pensei que esse comando nem existia no Ubuntu/Debian e cheguei inclusive a criar um shell script que fazia a mesma coisa. Essa semana eu descobri que esse comando existe sim, só que não vem instalado por padrão e para habilitá-lo você precisa instalar o pacote sysvconfig


$ aptitude install sysvconfig

O mais impressionante disso tudo é a simplicidade do script, ao melhor estilo KISS


$ vim /usr/bin/service
#!/bin/sh
set -e
/etc/init.d/$1 $2 $3