Arquivo

Textos com Etiquetas ‘PHP’

Dica: Zend + PHP 5.2 + Firebird + CentOS 5.3 64bits

14, novembro, 2009 2 comentários

Opa,

Essa semana perdi passei um bom tempo lutando para colocar o módulo do Firebird para funcionar com o Zend + PHP 5.2 em um ambiente com CentOS 5.3 64 bits, mais precisamente ocorriam problemas com campos tipo BLOB. Após várias algumas tentativas sem sucesso, o Diego (vulgo Perebinhas) me mandou um comentário de um post, que ele ainda não me informou o link, falando algo sobre um problema para gerar o módulo com as versões do PHP superiores à 5.2.1, a versão que eu estava utilizando era 5.2.10 e já tinha testado com a última versão disponível também, após esse comentário resolvi testar!

# php -v

PHP 5.2.10 (cli) (built: Jun 22 2009 10:22:39)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies
with Zend Extension Manager v5.1, Copyright (c) 2003-2009, by Zend Technologies
- with Zend Data Cache v4.0, Copyright (c) 2004-2009, by Zend Technologies [loaded] [licensed] [disabled]
- with Zend Utils v1.0, Copyright (c) 2004-2009, by Zend Technologies [loaded] [licensed] [enabled]
- with Zend Optimizer+ v4.0, Copyright (c) 1999-2009, by Zend Technologies [loaded] [licensed] [disabled]
- with Zend Debugger v5.2, Copyright (c) 1999-2009, by Zend Technologies [loaded] [licensed] [enabled]

Baixe os fontes do PHP versão 5.2.1:

# wget -c http://museum.php.net/php5/php-5.2.1.tar.bz2

Descompacte e execute os comandos configure e make para gerar o módulo:

# tar -xvjf php-5.2.1.tar.bz2
# cd php-5.2.1
# ./configure –with-interbase=shared
# make

Opcional: Caso deseje execute o make test para verificar se existem erros com o módulo:

# make test

Agora copie o módulo interbase.so criado para a pasta de módulos do php:

# cp modules/interbase.so /usr/lib64/php/modules/

OBS.: No caso do Zend a pasta utilizada foi /usr/local/zend/lib/php_extensions/.

Edite o arquivo php.ini para que o módulo seja carregado:

# vim /etc/php.ini

extension=interbase.so

Para finalizar reinicie o Apache para que o módulo seja carregado:

# /etc/init.d/httpd restart

Agora é só fazer os testes! Abraço!

Categories: Linux Tags: , , , ,

Lighttpd com PHP + MySQL no CentOS

14, agosto, 2009 11 comentários

Opa,

Já faz algum tempo que eu soube do Lighttpd (através do Enderson), mas sempre utilizei o Apache como serviço de hospedagem Web nos servidores que instalo por uma simples razão, sempre me serviu muito bem, mas ultimamente eu precisava de um simples serviço Web com suporte a PHP e MySQL para hospedar um único sistema, foi quando eu resolvi testar o Lighttpd!

Primeiro, caso ainda não esteja instalado, é necessário instalar os pacotes do MySQL e PHP:

# yum install mysql mysql-server php-cli php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc

Ative o serviço do MySQL para iniciar durante o boot e inicie-o no sistema:

# chkconfig mysqld on && /etc/init.d/mysqld start

Agora é necessário alterar a senha do administrador do banco de dados MySQL, portanto execute os comandos abaixo:

# mysqladmin -u root password senha123
# mysqladmin -h hostname.servidor -u root password senha123

OBS.: Lembre-se de alterar a senha123 pela senha que deseja para o adminstrador do MySQL e altere hostname.servidor pelo hostname do seu servidor!

Agora vamos baixar e instalar o Lighttpd, para isso existem 2 formas, baixar os pacotes manualmente do repositório DAG, ou ativar o repositório DAG e instalar via YUM, eu escolhi baixar os pacotes manualmente e instalar via RPM (caso deseje a segunda opção basta dar uma olhada na fonte utilizada neste post). Execute os comandos abaixo:

# cd /tmp/
# wget -c http://dag.wieers.com/rpm/packages/lighttpd/lighttpd-1.4.18-1.el5.rf.x86_64.rpm
# wget -c http://dag.wieers.com/rpm/packages/lighttpd/lighttpd-fastcgi-1.4.18-1.el5.rf.x86_64.rpm
# rpm -Uvh lighttpd-1.4.18-1.el5.rf.x86_64.rpm
# rpm -Uvh lighttpd-fastcgi-1.4.18-1.el5.rf.x86_64.rpm

Agora iremos alterar dois arquivos de configuração, o primeiro é o php.ini que precisamos adicionar a linha abaixo no final do arquivo:

# vim /etc/php.ini

cgi.fix_pathinfo = 1

O segundo é o lighttpd.conf que precisa descomentar as linhas abaixo:

# vim /etc/lighttpd/lighttpd.conf

"mod_fastcgi",

fastcgi.server = ( ".php" =>
( "localhost" =>
(
"socket" => "/tmp/php-fastcgi.socket",
"bin-path" => "/usr/bin/php-cgi"
)
)
)

Inicie o serviço do Lighttpd e ative-o na inicialização do sistema com os comandos abaixo:

# /etc/init.d/lighttpd start
# chkconfig lighttpd on

Pronto! Serviço instalado! Caso deseje crie um arquivo info.php para verificar se tudo está OK:

# vim /srv/www/lighttpd/info.php

Abraço!

Fonte: http://www.howtoforge.com/lighttpd_php5_mysql_centos5.0

Categories: Linux Tags: , , , ,

Oracle Instantclient + PHP + Fedora 6 (Zod)

16, julho, 2008 2 comentários
Opa,
Após alguns dias parado, estou de volta para mais uma dica técnica, essa é sobre como instalar o Oracle Instantclient + PHP no Fedora 6 (Zod), segue abaixo o processo:

Primeiro faça o download do Instantclient no site da Oracle através desse link, eu escolhi o Instantclient Basic Version 10.2.0.4 (oracle-instantclient-basic-10.2.0.4-1.i386.rpm). Depois faça a instalação utilizando o comando abaixo:
# rpm -Uvh oracle-instantclient-basic-10.2.0.4-1.i386.rpm

Realizada a instalação é necessário criar o profile para carregar as variáveis de ambiente do Oracle, crie o arquivo oracle.sh com o conteúdo abaixo:
# vim /etc/profile.d/oracle.sh

# Oracle variables
export ORACLE_HOME=/usr/lib/oracle/10.2.0.4/client
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export TNS_ADMIN=$ORACLE_HOME/network/admin

Ajuste as permissões do arquivo com o comando abaixo:
# chmod 755 /etc/profile.d/oracle.sh

Agora precisamos instalar o pacote php-oci8, mas para isso é necessário adicionar o repositório remi através dos comandos abaixo (Fedora 6):
# wget http://rpms.famillecollet.com/remi-release-6.rpm
# rpm -Uvh remi-release-6.rpm

Agora instalamos o php-oci8 com o comando abaixo:
# yum –enable remi install php-oci8

Agora precisamos criar o tnsnames.ora:
# mkdir -p /usr/lib/oracle/10.2.0.4/client/network/admin
# vim /usr/lib/oracle/10.2.0.4/client/network/admin/tnsnames.ora

NOME_BANCO =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = NOME_OU_IP_HOST)(PORT = 1521))
)
(CONNECT_DATA =
(SID = NOME_SID)
)
)

Feito isso reinicie o apache com o comando:
# /etc/init.d/httpd restart

E pronto, já deve estar funcionando seu PHP com suporte a Oracle no Fedora 6.

Fonte: http://www.nerdgirl.dk/linux/fc4/oracle_instant_client.php

Categories: Linux Tags: , , ,

Aplicação em PHP para alterar senha no AD

21, janeiro, 2008 41 comentários

Opa,

Primeiro a velha dica, “Este é um post técnico, para os que não entendem de Linux favor pular!” 🙂

Agora vamos ao que interessa, eu gosto de dizer que eu adoro meu trabalho pelo simples fato de não ter que mexer em lixo, mas às vezes sou obrigado a mexer no lixo para resolver algumas solicitações. Uma delas foi criar uma aplicação em PHP que pudesse alterar a senha do usuário no Active Directory da Mico$oft. No mesmo instante eu pensei: “Isso deve ser moleza, já devem ter pelo menos uns 100 scripts prontos ou até mesmo projetos no sourceforge.net!”, bem, para a minha surpresa isso demorou mais do que eu esperava. Para usar o php+ldap para acessar a base do AD é simples, para fazer consultas também é simples, mas para alterar/adicionar/excluir dados da base do AD o negócio é mais embaixo. Foi necessário criar um certificado raiz no servidor do AD e copiá-lo para o Linux, é isso mesmo que você está pensando, o AD só permite essas operações rodando sobre ssl (porta 636).

Para criar o certificado no servidor do AD será necessário (caso não esteja instalado) adicionar o serviço de certificação, se conecte no seu servidor AD, vá até adicionar/remover programas, depois adicionar/remover componentes, na lista marque a opção Serviços de Certificação e clique em OK/Finish ou qualquer outra coisa que seja, já esqueci! Após instalado abra o Serviço de Certificação (Iniciar / Ferramentas Administrativas / Autoridade de certificação), clique com o botão direito do mouse sobre o servidor que foi criado e escolha propriedades, depois clique no botão “Exibir certificado”, na janela que aparecer escolha a aba “Detalhes” e clique no botão “Copiar para arquivo…”, clique em avançar, escolha o formato codificado na base 64 e clique em avançar, escolha o local onde será gerado o certificado e depois OK/Finish ou qualquer outra coisa que seja, pronto! Criamos o certificado raiz do servidor AD, agora precisamos copiar para o servidor Linux, de preferência copie esse arquivo utilizando uma maneira segura (SSH).

Com o arquivo no servidor Linux mova-o para a pasta /etc/ssl/certs (Gentoo e OpenSuSE), ajuste as permissões (chmod 644 e chown root:) e execute o comando c_rehash. Abra o arquivo /etc/openldap/ldap.conf e adicione as seguintes linhas:

TLS_REQCERT never

TLS_CACERT /etc/ssl/certs/nome_certificado_copiado_do_ad.pem
TLS_CACERTDIR /etc/ssl/certs

Depois disso reinicie o serviço do Apache, crie sua aplicação PHP e pronto, lembrando que é necessário compilar o php com suporte a ldap e ssl! Abaixo tem um exemplo de uma aplicação para alterar a senha do usuário, lembre-se de adicionar as tags do php. Maiores informações no site do php.

$AD_server = “ldaps://srvad.teste.com”;
$AD_Auth_User = “Administrador@teste.com”;
$AD_Auth_PWD = “senha_administrador”;
$AD_dn = ‘CN=Users,DC=teste,DC=com’;
$uid = “usuario_alterar”;
$pwdold = “senha_antiga”;
$pwdtxt = “novasenha”;

$protocolVersion = 3;

$ldap = ldap_connect($AD_server);
if (!ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, $protocolVersion)) {
exit(‘Falha em definir protocolo na versao ‘.$protocolVersion);
}
ldap_set_option($ldap, LDAP_OPT_REFERRALS, 0);
ldap_bind($ldap);
if (ldap_errno($ldap) !== 0) {
exit(‘Nao foi possivel conectar no servidor’);
}
ldap_bind($ldap, $AD_Auth_User,$AD_Auth_PWD);
if (ldap_errno($ldap) !== 0) {
exit(‘ERRO: ‘.ldap_error($ldap));
}
$searchResults = ldap_search($ldap, $AD_dn, ‘cn=*’.$uid.’*’);
// no matching records
if ($searchResults === false){
exit(‘Usuario nao encontrado’);
}

if (!is_resource($searchResults)){
exit(‘Erro na consulta.’);
}
$newPassword = “\”” . $pwdtxt . “\””;
$len = strlen($newPassword);
$newPassw = “”;

for($i=0;$i<$len;$i++) { $newPassw .= “{$newPassword{$i}}00”; } $info[“unicodepwd”] = $newPassw; $entry = ldap_first_entry($ldap, $searchResults); if (!is_resource($entry)){ exit(‘Couldn’t get entry’); } $userDn = ldap_get_dn($ldap, $entry); $resultado = ldap_modify($ldap, $userDn, $info); if($resultado) { echo “Senha alterada com sucesso! “; }else{ echo “Erro! “; echo ldap_error($ldap).” “; }

Categories: Linux Tags: ,