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

Zebra – Impressora de Pulseiras HC 100

A Zebra HC100 foi desenvolvida especificamente para atender às necessidades de hospitais, clinicas de saude, laboratórios de analises clínicas e lugares que precisem ter uma identificação constante das pessoas, como lugares de lazer, hotéis, academias.

Com a Zebra HC100 o custo da pulseira fica mais barato e ainda é mais fácil e mais eficaz que as soluções em impressão a laser.

Zebra HC100

Zebra HC100


// Código de Barras
^FO60,2625^BCN,100,N,N,N,N^FD&variavel^FS

^FO200,2000^A0B,70,60^FD&nm_paciente^FS
alto
^FO40,2000^A0B,20,60^FDPRONTUARIO:&nr_prontuario^FS
Comprido e baixo
^FO90,2000^A0B,30,40^FDATENDIMENTO:&nr_atendimento^FS
Curto e alto

^XA
^FO60,2625^BCN,100,N,N,N,N^FD&nr_atendimento^FS
^FO30,2250^A0B,30,40^FDPRONTUARIO: &nr_prontuario^FS
^FO60,2225^A0B,30,40^FDATENDIMENTO: &nr_atendimento^FS
^FO100,2050^A0R,70,60^FD&nm_paciente^FS
^FO40,1500^A0B,30,40^FDNASC: 26/04/1990^FS
^FO40,1200^A0B,30,40^FDIDADE: 24a2m^FS
^FO200,1950^A0B,30,30^FDMEDICO: &nm_medico^FS
^FO250,2200^A0B,30,30^FDRESPONSÁVEL: &nm_responsavel^FS
^FO270,1450^A0B,20,30^FD** &ds_estab **^FS
^PRA
^PQ&nr_etiquetas
^FDvertical^FS
^XZ

Vertical

^FO40,240^A0,24,20^FDRESPONSÁVEL: &nm_responsavel^FS
^FO40,31^A0,30,30^FD&nm_paciente^FS
^FO40,60^BCN,70,N,N,N,N^FD&atend^FS
^FO400,75^A0,24,20^FDPRONT: &nr_prontuario^FS
^FO550,75^A0,24,20^FDINTER: &atend^FS
^FO400,95^A0,24,20^FDENTRADA: &dt_entrada^FS
^FO40,150^A0,24,20^FDNASC: &dt_nascimento^FS
^FO235,150^A0,24,20^FDIDADE: &ds_anos_meses^FS
^FO400,150^A0,24,20^FDSEXO: &ds_sexo^FS
^FO40,180^A0,24,20^FDEND: &ds_endereco^FS
^FO390,180^A0,24,20^FD&nr_endereco^FS
^FO440,180^A0,24,20^FD&ds_complemento^FS
^FO510,180^A0,24,20^FD&ds_bairro^FS
^FO40,210^A0,24,20^FDCIDADE: &ds_municipio^FS
^FO330,210^A0,24,20^FDUF: &sg_estado^FS
^FO400,210^A0,24,20^FDTEL: &nr_telefone^FS
^FO40,240^A0,24,20^FDRESPONSÁVEL: &nm_responsavel^FS

Para aprender mais sobre a programaçaõ ZPL II, clique nos links abaixo para ver o manual.

Guia de programação ZPL II

Manual da Impressora Zebra HC100

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();
}

Tendo a necessidade para um maior controle das ligações que são feitas e dividir os custos por setor da empresa, iremos integrar o LOG que o software remora cria a cada ligação que é feita.
O PABX intelbras permite controlar as ligações atráves de usuário e senha, os usuário vão de 00 a 99, o pabx está conectado no servidor atraves da porta serial.
O remora gera 2 tipos de LOG, sendo um por ramal onde originou as ligações e outro por codigo de usuário que fez as ligações. Este logs ficam dentro na pasta(INTEGRA) onde o remora foi instalado.

Esta integração será feita usando um script PHP que ficara como uma tarefa agendada(CRON), para ser executada 2 vezes por dia, as 12h e 24h.

arquivos de log
Por código sendo os 2 ultimos caracteres no nome do arquivo o codigo de usuário.
CODIGO00.TXT, CODIGO01.TXT, CODIGO02.TXT, CODIGO03.TXT, CODIGO04.TXT…

CONTEUDO DO ARQUIVO CODIGO00.TXT

1
2
3
4
Hora     T OP TR RRRRR NNNNNNNNNNNNNNNNNNNN HH:MM:SS HH:MM:SS DD/MM/AAAA CL 99999,99 CP DDDDDDDDDDDDDDDDDDDDDDDDD
15:55:43 S 12 32   304 99999999             15:36:35 00:00:18 20/10/2011  5     0,28 00 CELULAR DDD 016
15:55:45 S 12 04   304 99999999             15:37:24 00:00:14 20/10/2011  7     0,13 00 FRANCA
16:00:06 S 12 31   304 99999999             15:59:41 00:00:23 20/10/2011  5     0,00 00 Fabiano celular

CONTEUDO DO ARQUIVO RMO00300.TXT
Por ramal sendo os 5 ultimos caracteres no nome do arquivo o numero do ramal.
RMO00300.TXT

1
2
3
03   300 99999999         10:30:54 00:00:07 20110627         0,15 12
32   300 99999999         10:41:51 00:02:46 20110627         2,10 12
01   300 99999999         10:50:51 00:00:07 20110627         0,15 12

Obs.: não esqueça de configurar o PHP para conectar ao oracle

Caso seu servidor web esteja em um ambiente separado do servidor com o remora instalado, você poderá criar scripts em shell para transferir os arquivos ou compartilhar a pasta, enfim faça da maneira que irá te atender.

Vamos ao que interessa;
O codigo está comentado, por isso não vou explicar passo a passo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
set_time_limit(0); //definiar tempo para execução do script caso o arquivo tenha muitas linhas
ob_start();
 
require_once('conecta_oracle.php');
//configure conforme o seu ambiente.
// "\ip_servidorpasta_compartilhadaarquivos do LOG"
$diretorio_data = "C:\intranet\www\data_txt\";
 
//listar arquivos do diretorio.
$$dir = @opendir($diretorio_data);
$i=0;
while (false !== ($file = readdir($$dir))) {// while pastas
	if ($file != "." && $file != ".." && $file != "Thumbs.db" && $file != $dir) { // if pastas
		$i++;
		$indice[$i] = "$file";
		$nm_arquivo 	= $indice[$i] = "$file";
		$tipo		= substr($indice[$i], 0, 6);
		$codigo_ramal	= substr($indice[$i], 6, 2);
 
 
// recebe parametros
	if($tipo == 'CODIGO'){
		//imprimi o nome do arquivo
		echo $nm_arquivo;
		echo ' -- '.$i.'<br />';
 
		$arquivo = $diretorio_data.$nm_arquivo;
 
			if (file_exists($arquivo)) {
 
			$ponteiro = fopen ("$arquivo", "r");
 
			$num_linhas = 0;
			$caracteres = 0;
 
				while (!feof ($ponteiro)) {
					if ($linha = fgets($ponteiro, 4096)){
						$num_linhas++;
						$caracteres += strlen($linha);
 
						if ($num_linhas != "1"){ // ignorar a primeira linha do arquivo cabeçalho.
							$DATA_IMPORTACAO = date('d/m/Y');//;
							$DS_USUARIO = 'import';
							$CD_PABX = $codigo_ramal;
 
							$HR_LEITURA			= substr($linha, 0, 9);
							$DS_TIPO			= substr($linha, 9, 1);
							$DS_OP 				= substr($linha, 11, 2);
							$DS_TR 				= substr($linha, 14, 2);
							$NR_RAMAL 			= substr($linha, 17, 5);
							$NR_LIGACAO 		= substr($linha, 23, 20);
							$HR_LIGACAO			= substr($linha, 44, 8);
							$DS_DURACAO 		= substr($linha, 53, 8);
							$DT_LIGACAO			= substr($linha, 62, 10);
							$DS_CL 				= substr($linha, 73, 2);
							$VL_LIGACAO			= substr($linha, 76, 8);
							$DS_CP 				= substr($linha, 85, 2);
							$DS_DESTINO 		= substr($linha, 88, 25);
 
							$consulta = "INSERT INTO hak_pabx_registro_codigo_tb (
							NR_SEQUENCIA, DATA_IMPORTACAO, DS_USUARIO, CD_PABX, HR_LEITURA, DS_TIPO, DS_OP, DS_TR,
							NR_RAMAL, NR_LIGACAO, HR_LIGACAO, DS_DURACAO, DT_LIGACAO, DS_CL, VL_LIGACAO, DS_CP, DS_DESTINO
							)
							VALUES (
							HAK_TELEFONIA_SEQ.Nextval, '$DATA_IMPORTACAO', '$DS_USUARIO', '$CD_PABX', '$HR_LEITURA', '$DS_TIPO', '$DS_OP', '$DS_TR',
							'$NR_RAMAL', '$NR_LIGACAO',	'$HR_LIGACAO', '$DS_DURACAO', '$DT_LIGACAO', '$DS_CL', '$VL_LIGACAO', '$DS_CP', '$DS_DESTINO'
							)";
 
								$stid = oci_parse( $conexao, "".$consulta."" ) or die ( " erro " . oci_error() );
 
								oci_execute ( $stid );
									//$exec = oci_execute( $stid , OCI_DEFAULT);
								oci_commit( $conexao );  // commits all new values: 1, 2, 3, 4, 5
 
						}//if ignora primeira linha
					}//if
				}//while
				echo 'total de importações: ' . $num_linhas_total  = $num_linhas_total + $num_linhas;
				fclose ($ponteiro);//FECHA O PONTEIRO DO ARQUIVO
				// você poderá apagar o arquivo para não importar o mesmo arquivo 2 vezes, ou renomear
//unlink("$arquivo");
				//rename($arquivo, "importado".$arquivo."000");//
			}//exists
			else { // FILE EXISTS
				echo "O arquivo $arquivo não FOI FOI ENCONTRADO";
				}
	}//tipo
 
	}
} // fecha while
 
oci_free_statement($stid);
oci_close($conexao);//fecha a conexão atual

Read More →

Bom pessoal, o objetivo desse tutorial é ensinar a vocês como enviar SMS atraves de um script PHP usando um modem, ou seu aparelho de celular.

Neste tuto estou usando o programa de gateway OZEKI NG, que pode ser baixado e usado por 30 dias grátis.

Eu andei pesquisando e não encontrei muita coisa sobre o assunto, porém existem várias empresas que oferecem o serviço gateway de SMS e cobram cerca de 0,20 por mensagem enviada.

As operadoras de telefonia movel cobram R$ 0,50 centavos por dia, para você enviar ilimitadas mensagens resumindo você gastaria apenas R$ 15,00 por mês para enviar ilimitados SMS.
Para começar baixe o programa no site: Ozekisms
http://www.ozekisms.com/index.php?owpn=112
http://www.ozekisms.com/index.php?owpn=433&dpath=%2Fattachments%2F113%2Finstall_1327415285_OzekiNG-SMS-Gateway_4.2.5.zip&dname=Ozeki+NG+SMS+Gateway+v4.2.5&dsize=+%289.3+MB%29+

Em seguida instale o programa(não vou entrar em detalhes da instalação) pois é bem simples além de ter uma opção para detectar automaticamente seu dispositivo e a porta(ex. das portas COM1, COM2, COM3, COM4).

Após instalado você poderá acessar o gateway para fazer as configurações.
http://127.0.0.1:9501/

Você pode se certificar em qual porta seu dispositivo esta atraves do gerenciador de dispositivos do windows.

Apos configurado aguarde alguns minutos para o programa reconhecer o dispositivo e enviar as mensagens.

O proximo passo é criar um formulário e o script php que enviára as informações para o gateway.

Read More →

Cria um arquivo com o nome teste.bat e coloque o codigo abaixo.

WINDOWS – teste.bat

1
2
md pasta_teste
exit

LINUX – teste.sh

1
2
mkdir /var/www/html
exit

O SCRIPT PHP

1
2
3
4
5
//WINDOWS
exec ('C:intranetwwwscriptsteste.bat');
 
//LINUX
exec('/home/teste/teste.sh');

Não esqueça de atribiur as permissões de leitura, escrita e execução para o script.(777)