O Postman é uma API cliente que permite desenvolvedores realizarem testes a partir de requisições HTTP.

É possível utilizar vários tipos de requisições, como exemplo, GET, POST, PUT e DELETE que são as mais comuns.

Para baixar o software post acesse: https://www.postman.com

Depois de ter instalado, acesse o programa e na tela inicial, no menu [File], clique em [new] ou clique no sinal [+] para abrir uma nova página de testes.

Em seguida selecionar o tipo de testes que deseja realizar, insira a URL e clique em Send.

https://fabianobento.com/webjson/products/

https://fabianobento.com/webjson/products/2

Teste com DELETE

POST

Consultando a informação na tabela.

php artisan migrate

[Illuminate\Database\QueryException] SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 1000 bytes (SQL: alter table users add unique users_email_unique(email))

Este erro ocorre devido a capacidade de armazenamento do engine (charset) do banco de dados;

Inclua a linha $table->engine = ‘InnoDB’; nos arquivos [migrations] para evitar o erro.

Caso queira manter como MyISAM edite o arquivo Builder.php, conforme descrito abaixo.

Correção rápida: Edite o arquivo; vendor\laravel\framework\src\Illuminate\Database\Schema\Builder.php

Alterando a variável $ defaultStringLength = 255;, para $defaultStringLength = 250;. Conforme o exemplo abaixo;

Exemplo:
public static $defaultStringLength = 255;

public static $defaultStringLength = 250;

Hoje vou mostrar como configurar o wamp server e preparar o ambiente de trabalho.

Testes realizados com o WAMP 2.4

WampServer 2.4  – Windows  32 Bits

Apache     : 2.4.4
MySQL      : 5.6.12
PHP          : 5.4.16
PHPMyAdmin : 4.0.4
SqlBuddy   : 1.3.3
XDebug     : 2.2.3

Link para download:

http://sourceforge.net/projects/wampserver/files/WampServer%202/Wampserver%202.4/

Para trabalhar com vhosts temos que adicionar no arquivo hosts os alias com o nome do computador e os sites que você irá trabalhar, segue exemplo abaixo;

C:\Windows\System32\drivers\etc\hosts

127.0.0.1       localhost
127.0.0.1        nome-pc
127.0.0.1        meusite.local
127.0.0.1        meusite.dev

Na sequencia precisamos configurar o Apache para trabalhar com vhosts.

Localizar o arquivo httpd.conf

C:\wamp\bin\apache\Apache2.4.4\conf\httpd.conf

Descomentar as linhas abaixo

#LoadModule vhost_alias_module modules/mod_vhost_alias.so
LoadModule vhost_alias_module modules/mod_vhost_alias.so

#Include conf/extra/httpd-vhosts.conf
Include conf/extra/httpd-vhosts.conf

#LoadModule rewrite_module modules/mod_rewrite.so
LoadModule rewrite_module modules/mod_rewrite.so

 

Agora iremos editar o arquivo httpd-vhosts.conf, adicionando os alias de domínios que informamos no arquivo hosts.

C:\wamp\bin\apache\Apache2.4.4\conf\extra\httpd-vhosts.conf

Acrescentar as linhas abaixo

<VirtualHost localhost:80>
ServerAdmin mail@mail.com
DocumentRoot “C:/wamp/www”
ServerName localhost
ServerAlias localhost
ErrorLog “logs/localhost-error.log”
CustomLog “logs/localhost-access.log” common
</VirtualHost>

<VirtualHost nome-pc:80>
ServerAdmin mail@mail.com
DocumentRoot “C:/wamp/www”
ServerName nome-pc
ServerAlias nome-pc
ErrorLog “logs/nome-pc-error.log”
CustomLog “logs/nome-pc-access.log” common
</VirtualHost>

 

<VirtualHost meusite.local:80>
ServerAdmin mail@mail.com
DocumentRoot “C:/wamp/www/meusite.local”
ServerName meusite.local
ServerAlias meusite.local
ErrorLog “logs/meusite.local-error.log”
CustomLog “logs/meusite.local-access.log” common
</VirtualHost>

 

<VirtualHost meusite.dev:80>
ServerAdmin mail@mail.com
DocumentRoot “C:/wamp/www/meusite.dev”
ServerName meusite.dev
ServerAlias meusite.dev
ErrorLog “logs/meusite.dev-error.log”
CustomLog “logs/meusite.dev-access.log” common
</VirtualHost>

Após acrescentar os dados,  salvar o arquivo e reiniciar os serviços do wamp server, e acessar os endereços configurados;

http://localhost

wamp-img

http://meusite.dev

http://meusite.local

 

Como instalar Apache, MySQL e PHP (LAMP) no CentOS 6.3
30/09/2012

Neste artigo vou descrever a maneira mais simples e rapida para configurar um servidor LAMP Apache, MySQL e PHP

Instalar o Apache

yum install httpd

instalar MySQL

yum install mysql-server

Iniciar o serviço do MySQL
service mysqld start

mysql_secure_installation

yum install php php-mysql

chkconfig httpd on
chkconfig mysqld on

service http start

Editado em 01/05/2013 19:20h
Desenvolvendo um sistema de enquete (Novo) PHP/MySQL Parte 1 (Planejamento)

A pedido de alguns de visitantes estou reformulando o tutorial antigo de enquete.
O primeiro passo é definirmos a estrutura que iremos trabalhar. Esta estapa é um levantamento das informações que vamos precisar.
Este será um sistema para enquetes com ilimitadas opções, sendo que no tutorial anterior eu havia criado o banco de dados com varias colunas, porém não é o ideal, pois não devemos ter colunas na tabela que não serão utilizadas.

Na segunda parte, estarei fazendo um código mais simplificado pois o foco deste tutorial é trabalhar mais o conceito da enquete.

Abaixo vou colocar o código das tabelas do banco e irei explicar o que será armazenado em cada uma.

Para entender o porque usei algumas siglas nas colunas, sugiro a leitura do Artigo:
Padrões para Nomenclatura em um banco de dados
http://blog.fabianobento.com.br/2011/09/padroes-para-nomenclatura-em-um-banco-de-dados/

Diagrama
diagram_enquete
Começando pela tabela das perguntas.

Precisamos, de um código para a enquete, a data do cadastro para sabermos quando foi cadastrada. Eu coloquei a coluna DT_INICIO, DT_FIM, para configuramos no código fonte quando a enquete será iniciada e encerrada, desta forma não seria necessário acessar o painel de controle para esta tarefa.

CREATE TABLE IF NOT EXISTS `enquete_perguntas` (
  `CD_ENQUETE` int(11) NOT NULL AUTO_INCREMENT COMMENT 'codigo da enquete',
  `DT_CADASTRO` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'data do cadastro',
  `NM_ENQUETE` varchar(150) NOT NULL COMMENT 'nome da enquete',
  `DS_PERGUNTA` varchar(150) NOT NULL COMMENT 'pergunta da enquete',
  `DT_INICIO` date NOT NULL COMMENT 'data inicio que será exibida',
  `DT_FIM` date NOT NULL COMMENT 'data final da exibição no site',
  `IE_SITUACAO` enum('A','I') NOT NULL COMMENT 'situação da enquete, Ativa ou Inativa',
  PRIMARY KEY (`CD_ENQUETE`),
  UNIQUE KEY `DT_INICIO` (`DT_INICIO`),
  UNIQUE KEY `DT_FIM` (`DT_FIM`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 COMMENT='Entidade para armazenar as perguntas das enquetes' AUTO_INCREMENT=2 ;

--
-- Extraindo dados da tabela `enquete_perguntas`
--

INSERT INTO `enquete_perguntas` (`CD_ENQUETE`, `DT_CADASTRO`, `NM_ENQUETE`, `DS_PERGUNTA`, `DT_INICIO`, `DT_FIM`, `IE_SITUACAO`) VALUES
(1, '2013-04-25 17:48:15', 'Operadora de Celular', 'Qual sua operadora de celular?', '2013-04-25', '2013-04-30', 'A');

Como estamos fazendo um sistema para ilimitadas opções, precisamos de uma outra tabela para armazenas estes dados.

--
-- Estrutura da tabela `enquete_opcoes`
--

CREATE TABLE IF NOT EXISTS `enquete_opcoes` (
  `NR_OPCAO` int(11) NOT NULL AUTO_INCREMENT COMMENT 'numero da opção',
  `CD_ENQUETE` int(11) NOT NULL COMMENT 'FK codigo da enquete',
  `DS_OPCAO` varchar(150) NOT NULL COMMENT 'descrição da opção',
  `QT_VOTO` int(11) NOT NULL DEFAULT '0' COMMENT 'quantidade de votos',
  PRIMARY KEY (`NR_OPCAO`),
  KEY `FK_enquete_opcoes` (`CD_ENQUETE`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 COMMENT='Entidade para armazenar as opções das enquetes' AUTO_INCREMENT=7 ;

--
-- Extraindo dados da tabela `enquete_opcoes`
--

INSERT INTO `enquete_opcoes` (`NR_OPCAO`, `CD_ENQUETE`, `DS_OPCAO`, `QT_VOTO`) VALUES
(1, 1, 'Claro', 0),
(2, 1, 'Tim', 0),
(3, 1, 'Vivo', 0),
(4, 1, 'Oi', 0),
(5, 1, 'Não tenho celular.', 0),
(6, 1, 'Outra operadora', 0);

Tabela para armazenar os comentários das enquetes.

--
-- Estrutura da tabela `enquete_comentarios`
--

CREATE TABLE IF NOT EXISTS `enquete_comentarios` (
  `NR_SEQUENCIA` int(11) NOT NULL AUTO_INCREMENT COMMENT 'Numero sequencial',
  `CD_ENQUETE` int(11) NOT NULL COMMENT 'FK codigo da enquete',
  `DT_ENVIO` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Data que o comentário foi enviado',
  `NR_IP` varchar(20) NOT NULL COMMENT 'numero de IP da pessoa que enviou',
  `NM_PESSOA` varchar(30) NOT NULL COMMENT 'nome da pessoa',
  `DS_EMAIL` varchar(60) NOT NULL COMMENT 'email da pessoa',
  `DS_COMENTARIO` tinytext NOT NULL COMMENT 'comentario sobre a enquete',
  `IE_SITUACAO` enum('A','P','R') NOT NULL COMMENT 'situação, Ativo, Bloqueado, Pendente de aprovação',
  PRIMARY KEY (`NR_SEQUENCIA`),
  KEY `FK_enquete_comentarios` (`CD_ENQUETE`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='Entidade para armazenar os comentários' AUTO_INCREMENT=1 ;

Esta tabela é uma das mais importantes, pois estaremos armazenando os logs de tudo o que acontecer com nossa enquete como; quem votou, quando, IP, e caso algum engraçadinho tente negativar sua enquete você poderá analisar os logs para identificar se houve alguma tentativa de burlar a enquete.

--
-- Estrutura da tabela `enquete_logs`
--

CREATE TABLE IF NOT EXISTS `enquete_logs` (
  `NR_SEQUENCIA` int(11) NOT NULL AUTO_INCREMENT,
  `CD_ENQUETE` int(11) NOT NULL,
  `NR_OPCAO` int(11) NOT NULL,
  `DT_ENVIO` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `NR_IP` varchar(20) NOT NULL,
  PRIMARY KEY (`NR_SEQUENCIA`),
  KEY `NR_OPCAO` (`NR_OPCAO`),
  KEY `CD_ENQUETE` (`CD_ENQUETE`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 COMMENT='Entidade para armazenar os LOGs' AUTO_INCREMENT=19 ;

--
-- Extraindo dados da tabela `enquete_logs`
--
INSERT INTO `enquete_logs` (`NR_SEQUENCIA`, `CD_ENQUETE`, `NR_OPCAO`, `DT_ENVIO`, `NR_IP`) VALUES
(6, 1, 4, '2013-04-30 03:26:58', '127.0.0.1'),
(7, 1, 1, '2013-04-30 03:27:01', '127.0.0.1');

Relacionamentos entre as tabelas

--
-- Restrições para a tabela `enquete_comentarios`
--
ALTER TABLE `enquete_comentarios`
  ADD CONSTRAINT `FK_enquete_comentarios` FOREIGN KEY (`CD_ENQUETE`) REFERENCES `enquete_perguntas` (`CD_ENQUETE`);

--
-- Restrições para a tabela `enquete_logs`
--
ALTER TABLE `enquete_logs`
  ADD CONSTRAINT `FK_enquete_logs` FOREIGN KEY (`NR_OPCAO`) REFERENCES `enquete_opcoes` (`NR_OPCAO`);

--
-- Restrições para a tabela `enquete_opcoes`
--
ALTER TABLE `enquete_opcoes`
  ADD CONSTRAINT `FK_enquete_opcoes` FOREIGN KEY (`CD_ENQUETE`) REFERENCES `enquete_perguntas` (`CD_ENQUETE`);

PHP – Upload de arquivos

Para upload maiores de 2MB, localizar e editar o arquivo php.ini.

http://php.net/file-uploads
file_uploads = On

Diretório temporário para upload de arquivos HTTP (vai usar o padrão do sistema, se não especificado).
http://php.net/upload-tmp-dir
upload_tmp_dir = “e :/ wamp / tmp”

O tamanho máximo permitido para arquivos enviados.
http://php.net/upload-max-filesize
upload_max_filesize = 2M

Tamanho máximo de dados POST que o PHP irá aceitar.
http://php.net/post-max-size
post_max_size = 8M

Configurando conexão com PHP + Oracle usando CentOS 6.3 / Red Hat 6.3

Neste artigo vou descrever a maneira mais simples e rapida para configurar o PHP para suporte com Oracle.

Antes de iniciar é necessário ter alguns pacotes básicos instalados;

1
# yum install gcc gcc-c++ autoconf libaio

Instalar o servidor web Apache
O comando abaixo instala o servidor web apache.

1
# yum -y install httpd

Configure para iniciar junto co o boot
Agora configuramos o apache para iniciar junto com o boot.

1
# chkconfig httpd on

Instalar o PHP
Instalando o PHP

1
# yum -y install php php-devel php-pear

Para instalar todas as bibliotecas do PHP – esta etapa não é obrigatoria
O comando abaixo instala todas as extensões disponíveis para o PHP

1
# yum -y install php*

Configurar o SELINUX
Agora vamos desabilitar SELINUX para não interferir no servidor httpd

1
2
3
/etc/sysconfig/selinux
 
# SELINUX=disabled

Instalar o Oracle client
Agora precisamos baixar o client do oracle no site Oracle.com é necessário fazer um cadastro rápido e gratuito.
Lembrando que você deve baixar de acordo com a arquitetura i686 ou x64

O comando abaixo instala os pacotes RPM.
x86_64
oracle-instantclient11.2-basic-11.2.0.3.0-1.x86_64.rpm
oracle-instantclient11.2-devel-11.2.0.3.0-1.x86_64.rpm

1
2
# rpm -ivh oracle-instantclient11.2-basic-11.2.0.3.0-1.x86_64.rpm
# rpm -ivh oracle-instantclient11.2-devel-11.2.0.3.0-1.x86_64.rpm

i686/i386
oracle-instantclient11.2-basic-11.2.0.1.0-1.i386.rpm
oracle-instantclient11.2-devel-11.2.0.1.0-1.i386.rpm

1
2
# rpm -ivh oracle-instantclient11.2-basic-11.2.0.1.0-1.i386.rpm
# rpm -ivh oracle-instantclient11.2-devel-11.2.0.1.0-1.i386.rpm

Agora é necessário setar a variável D_LIBRARY_PATH para o caminho da instalação do oracle client, que será carregado durante a Instalação do OCI8

1
2
# export LD_LIBRARY_PATH=/usr/lib/oracle/
# export LD_LIBRARY_PATH=/usr/lib64/oracle/

PHP – Instalação das extensões PECL
http://php.net/manual/pt_BR/install.pecl.php

Instalar o OCI – http://pecl.php.net/package/oci8

1
# pecl install oci8

Quando for solicitado o caminho do oracle_home, pressione enter caso tenha usado o comando export LD_LIBRARY_PATH apontando para o caminho do oracle client ou informar o caminho da instalação
Lembrando que tem diferença entre as plataformas i686 e x64(de acordo com a versão de plataforma e client do oracle usados)
Para suporte
http://php.net/manual/pt_BR/install.pecl.php

Editar o arquivo php.ini

1
# /etc/php.ini

Acrescentar a linha

1
# extension=oci8.so

reiniciar o host

1
# reboot

após reiniciar crie um arquivo phpinfo.php

1
<!--?php phpinfo(); ?-->

Se tudo ocorreu bem deverá aparecer o modulo OCI conforme a imagem abaixo

Problemas comuns

1
2
3
4
5
6
7
8
9
10
When running the CLI version of PHP from the command line, you may receive errors like the following:
[root@myserver /root]$ php -v
PHP Warning: Module 'pcre' already loaded in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/php5/lib/php/extensions/no-debug-non-zts-20060613/spl.so' - /usr/local/php5/lib/php/extensions/no-debug-non-zts-20060613/spl.so: Undefined symbol "pcre_exec" in Unknown on line 0
 PHP Warning: Module 'SimpleXML' already loaded in Unknown on line 0
PHP Warning: Module 'session' already loaded in Unknown on line 0
PHP Warning: Module 'exif' already loaded in Unknown on line 0
PHP 5.2.3 (cli) (built: Jun 14 2007 15:29:17)
Copyright (c) 1997-2007 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies

Como resolver?
-Verifique se desabilitou o SELINUX após a configuração é necessário reiniciar o host.

 

Atualizado em 28/04/2018

Para instalar o suporte para PHP 5.4 no Linux CentOS 7

pecl install oci8-2.0.12

Extra: Quando tiver problemas para conexão pelo SQL PLUS (sqlplus command not found on Linux)

(para usar o SQLPLUS)
# yum install glibc.i686

Você pode abrir o SQLPLUS para testar a conexão com o banco de dados

Digite no terminal o comando sqlplus

# sqlplus

Para descobrir o diretorio de instalação do Oracle

#find / -name sqlplus -print

Resultado será parecido com:

# /u01/app/oracle/product/database/bin/sqlplus

Execute o comando para indicador o local

ORACLE_HOME=/u01/app/oracle/product/database
export ORACLE_HOME
PATH=$PATH:$ORACLE_HOME/bin
export PATH

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function log_sql_erro($mensagem){
 
$descricao = mysql_error();
$nr_erro = mysql_errno();
 
$error = "MySQL erro: $descricao";
$error .= "Numero do erro: $nr_erro";
$error .= "Data:" . date ("D, F j, Y H:i:s");
$error .= "IP: " . getenv("REMOTE_ADDR");
$error .= "Browser" . getenv("HTTP_USER_AGENT");
$error .= "Referer" . getenv("HTTP_REFERER");
$error .= "Server name" . getenv("SCRIPT_NAME");
$error .= "Script Name" . getenv("SERVER_NAME");
$error .= "Server" . getenv("SERVER_SOFTWARE");
$error .= "OS" .PHP_OS;
$error .= "PHP Versao" . PHP_VERSION;
$error .= "";
 
echo $error;
 
exit();
}