quarta-feira, 4 de fevereiro de 2009

Ao tentar instalar o PHP no linux aparece a seguinte mensagem "configure error Please reinstall the BZip2 distribution"

Você deve instalar o pacote bzip2-devel.

[Exemplo de instalação no Fedora]

- Execute o seguinte comando:
yum install bzip2-devel

Ao tentar instalar o PHP no linux aparece a seguinte mensagem "configure error Please reinstall the libcurl distribution"

Você deve instalar os pacotes curl e curl-devel.

[Exemplo de instalação no Fedora]

- Execute o seguinte comando:
yum install curl curl-devel

Ao tentar instalar o PHP no linux aparece a seguinte mensagem "configure error Could not find pcre.h in /usr"

Você deve instalar o pacote pcre-devel para poder pegar o cabeçalho pcre.h

[Exemplo de instalação no Fedora]

- Execute o seguinte comando:
yum install pcre-devel

Ao tentar instalar o PHP no linux aparece a seguinte mensagem "configure error Cannot find OpenSSL's evp.h"

Você deve instalar o pacote openssl-dev* para poder pegar o cabeçalho evp.h

[Exemplo de instalação no Debian]

- Execute o seguinte comando:
apt-get install openssl-dev*


[Exemplo de instalação no Fedora]

- Execute o seguinte comando:
yum install openssl-dev*

Nota: No Fedora o nome do pacote é openssl-devel. Algumas distribuições podem apresentar nomes distintos para o mesmo pacote.

Ao tentar instalar o PHP no linux aparece a seguinte mensagem: "configure error xml2-config not found. Please check your libxml2 installation"

Você deve instalar o pacote libxml2-dev* para poder pegar o comando xml2-config.

[Exemplo de instalação no Debian]

- Execute o seguinte comando:
apt-get install libxml2-dev*


[Exemplo de instalação no Fedora]

- Execute o seguinte comando:
yum install libxml2-dev*

Nota: No Fedora o nome do pacote é libxml2-devel. Algumas distribuições podem apresentar nomes distintos para o mesmo pacote.

segunda-feira, 19 de janeiro de 2009

ldap_search + PHP + filter por atributo memberOf

Estou fazendo um sistema em php que faz pesquisas no Active Directory.
Precisei pesquisar todos os usuários do grupo Professores, como não é tão óbvia a pesquisa, resolvi registrá-la aqui:


[Introdução]

objectClass=<tipo do objeto> busca todos os objetos com o tipo informado
memberof=<grupo> busca todos anteriores que são membros do


[Pesquisa ERRADA]

$sFilter = "(&(objectClass=user)(memberof=Professores))";
$pResult = ldap_search($pLinkParaAD, "cn=usuarios,dc=teste,dc=com", $sFilter, array("name"));


- Esse foi o meu erro: memberof=Professores, não é assim que o AD grava o nome dos grupos.


[Pesquisa CORRETA]

$sFilter = "(&(objectClass=user) (memberof=CN=Professores,CN=Users,DC=teste,DC=com))";
$pResult = ldap_search($pLinkParaAD, "cn=usuarios,dc=teste,dc=com", $sFilter, array("name"));

- Deve ser informado o DN (nome distindo) do grupo: CN=Professores,CN=Users,DC=teste,DC=com

- Para descobrir-lo faça uma pesquisa com o ldap_search:
$sFilter = "(&(objectClass=group))";
$pResult = ldap_search($pLinkParaAD, "cn=usuarios,dc=teste,dc=com", $sFilter, array("dn"));

sexta-feira, 16 de janeiro de 2009

mysql ERROR 1036 (HY000) Table 'TABELA' is read only

Esse problema ocorreu quando fiz um backup do banco de dados (BANCO_TESTE) mysql simplesmente copiando os arquivos (/var/lib/mysql). O mysql deve ter algum mecanismo, que ainda não descobri o que é, que bloqueia a escrita nesses casos.
Para contornar o problema, procedi da seguinte maneira:

- Todos os passos devem ser efetuados com o usuário root do mysql.

- Fiz um dump do banco de dados BANCO_TESTE (a senha é grudado no "p" mesmo):
mysqldump -u root -psenha_root BANCO_TESTE > BANCO_TESTE-backup.sql

- Entrei no console mysql:
mysql -u root -psenha_root

- Apaguei o banco de dados problemático (atente-se ao ";" pois é sql):
drop database BANCO_TESTE;

- Criei um novo banco de dados:
create database BANCO_TESTE;

- Atribuí permissões ao usuário no novo banco de dados de qualquer domínio:
GRANT ALL PRIVILEGES ON 'BANCO_TESTE'.* TO 'usuario_do_banco_teste'@'%';

- Saí do console (\q é um parâmetro do console mysql):
\q

- Recuperei o backup:
mysql -u root -psenha_root BANCO_TESTE < BANCO_TESTE-backup.sql

- Pronto, a partir daí tudo funcionou perfeitamente.


[Dicas]

- Se for fazer backup de um banco de dados nunca copie os arquivos! Principalmente se for postgres (ele é mais seguro que o mysql, nem deixa executar o serviço).
Sempre utilize as ferramentas de dump: mysqldump para o mysql ou pg_dump para o postgres.