Como instalar o OWNCLOUD no Cpanel DE VERDADE com erro FORBIDDEN no client do Owncloud

Bom, isso se aplica ao erro FORBIDDEN que aparece no client desktop do Owncloud (testado até a 2.3.1).

não adianta querer recorrer ao Softaculous para instalar o Owncloud porque o mesmo só permite esse tipo de instalação em clientes que possuem a licença PREMIUM do mesmo. Não adianta tentar 1001 coisas e até colocar “HOW TO INSTALL OWNCLOUD CPANEL”  que não tem NADA que ajuda você. A saída? É algo beeeeem diferente do comum!
Vamos por partes.

Primeira parte que temos que entender é por que o erro ocorre?
A melhor forma de descobrir isso é liberando o debugger dele no nível mais pesado. Para isto temos de fazer o seguinte:

Entre na pasta CONFIG (cd /config) e lá abra o arquivo config.php.
Após abrir o arquivo config.php, depois da linha 

‘installed’ => true,

insira:

“log_type” => “owncloud”,
“logfile” => “owncloud.log”,
“loglevel” => “0”,
“logdateformat” => “F d, Y H:i:s”,

Assim que você fizer isto, já pode tentar ver o erro (que é quase 100% certo de ser cabeçalhos em php).

No arquivo que fica NA RAIZ DO OWNCLOUD chamado owncloud.log haverá alguma descrição como:

,”app”:”webdav”,”message”:”Exception: {\”Message\”:\”HTTP\\\/1.1 401 No ‘Authorization: Basic’ header found. Either the client didn’t send one, or the server is mis-configured

Isso é o cabeçalho web php quebrado.

Saída? YEP!

Entre no arquivo de confs adicionais do apache:

vim /etc/apache2/conf.d/includes/pre_main_global.conf

E coloque o seguinte:

SetEnvIf Authorization “(.*)” HTTP_AUTHORIZATION=$1

OBS: É necessário que o WEBDAV esteja ativado no APACHE para recursos extras, se não tem certeza veja no WHM -> EASYAPACHE4, clique em PERSONALIZAR (CUSTOM) -> APACHE MODULES e escreva dav, marque as 3 opções e mande provisionar!


Depois disso reinicie o apache (service httpd restart) e mande aquela caixa de biz para minha casa :).

Links extras:

https://central.owncloud.org/t/no-basic-authentication-headers-were-found-message/819

https://doc.owncloud.org/server/9.0/admin_manual/configuration_server/logging_configuration.html

Como instalar o Jelly Bean no Motorola Milestone 2 sem problemas

Pessoal, para instalar o android 4.1 no milestone 2 acessem o artigo abaixo (muito simples por sinal):

http://www.appunix.com.br/howto/linux/como-atualizar-o-milestone-2-para-o-android-4-1-jelly-bean-com-seguranca/

No mesmo site existe um artigo para quem quer instalar a rom de fábrica (2.3.6 das operadoras nacionais), super tranquilo também:

http://www.appunix.com.br/howto/linux/como-fazer-o-restore-completo-do-milestone-2-100-garantida-a-restauracao/

Como proteger o WordPress de SQL Injection

Foi dada uma dica bem expressiva de como evitar de forma simples e segura o ataque de filhos da mãe que não tem o que fazer e passam o dia bisbilhotando sites para fazerem besteira. Normalmente culpam-se tudo e todos, até mesmo o cms, mas esquecem de fazer o papel mais simples e de suma importância, a atualização do CMS. Veja o principal motivo de aplicar patches de segurança em sua hospedagem de host aqui:

http://icentral.com.br/blog/qual-motivo-de-atualizar-um-cms-no-meu-host-quer-seja-wordpress-joomla-drupal-e-etc/

Postagens em outra “dimensão”! Agora é oficial!

Galera, bom dia!

Algumas pessoas já conhecem meu blog e sabem que é sempre um prazer estar postando sobre coisas que gosto, coisas que me ajudaram ou curiosidades neste mundo inifinito que é a área de TI. Estou desde já redirecionando os how tos para outro blog afim de centralizar as informações e evitar duplicidade com o Google, Yahoo, CUIL, MSN e outros buscadores famosos.

Quem é o NerdBlog.Info?

Sou eu mesmo, mas 100% focado nas experiências de TI e curiosidades em geral.

Agradeço a todos vocês e afirmo que vou demorar um pouco pra postar algo aqui. (lá o fluxo de how tos será maior)

Abraços.

http://www.nerdblog.info (quase ia me esquecendo)

7 coisas ultra simples de se fazer com php!

É comum ver scripts com dezenas de linhas de código pra fazer algo extremamente simples. Fica aqui meu apelo desesperado com algumas dicas rápidas.

1 – Listar arquivos de um diretório

Se não houver um motivo muito claro pra usar opendir, readdir e closedir (não consigo pensar em nenhum), a forma mais prática de listar o conteúdo de um diretório é com DirectoryIterator:
$iterator = new DirectoryIterator(‘/var/www’);

foreach ( $iterator as $entry ) {
echo $entry->getFilename(), “\n”;
}

Se for necessário listar os arquivos recursivamente, percorrendo todos os subdiretórios, é só usar o RecursiveDirectoryIterator junto com o RecursiveIteratorIterator:
$iterator = new RecursiveDirectoryIterator(‘/var/www’);
$recursiveIterator = new RecursiveIteratorIterator($iterator);

foreach ( $recursiveIterator as $entry ) {
echo $entry->getFilename(), “\n”;
}

Com um pouco de criatividade, é possível estender essas classes com qualquer lógica facilmente, como por exemplo, para montar uma árvore com a estrutura dos diretórios.
2 – montar e desmontar query strings

Mesmo que menos comum (e menos útil), colocar uma query string numa URL é um trabalho trivial demais pra ser feito com implode, concatenando tudo ou qualquer outro método engenhoso. Desde o lançamento do PHP 5 é possível contar com a http_build_query:
$dados = array(
‘hl’ => ‘pt-BR’,
‘q’ => ‘Forgetting Sarah Marshall’,
‘testa-escape’ => ‘acentuação’,
);

echo http_build_query($dados);
// hl=pt-BR&q=Forgetting+Sarah+Marshall&testa-escape=acentua%C3%A7%C3%A3o

E o inverso também é possível com as funções parse_url e parse_str:
$url = parse_url(‘http://www.google.com/search?q=anneke+van+giersbergen&num=50’);

parse_str($url[‘query’], $query);

echo $query[‘q’];
// anneke van giersbergen

Só fique atento que, por motivos alheios ao bom senso, parse_str por padrão extrai as variáveis no escopo onde foi chamada. É necessário passar um segundo argumento para ter um array gerado por referência, como no exemplo acima com a variável $query.
3 – ler páginas remotas

Dentre todas as implementações, a mais desnecessária costuma ser fsockopen, fwrite, feof, fgets e fclose para ler arquivos remotos por HTTP.

Uma função já resolve:
$contents = file_get_contents(‘http://php.net/file_get_contents’);

Isso é possível graças aos protocol wrappers que encapsulam a lógica de acesso aos respectivos protocolos, tal como HTTP. Esta forma de acesso, no entanto, depende da configuração allow_url_fopen estar habilitada no php.ini (que é o padrão).

Para ler os response headers da requisição, utilize fopen com stream_get_meta_data.

E se um dia você quiser impressionar a mulherada, veja a função stream_wrapper_register para criar o seu próprio protocol wrapper.
4 – submeter dados por post para uma página remota

A coisa fica mais complicada quando o desenvolvedor pensa em usar cURL pra submeter dados por POST para outro servidor. A extensão até tem seu mérito, mas usá-la apenas pra este propósito é um grande equívoco.

As funções que fazem uso dos protocol wrappers aceitam um objeto de stream context, criado pela função stream_context_create, para configurar alguns aspectos do protocolo. As opções de contexto do protocolo HTTP permitem definir, entre outras coisas, o método de acesso (GET, POST, etc) e o conteúdo a ser postado:
$content = http_build_query(array(
‘cidade’ => ‘Rio de Janeiro’,
‘tipo’ => ‘Apartamento’,
));

$context = stream_context_create(array(
‘http’ => array(
‘method’ => ‘POST’,
‘content’ => $content,
)
));

$contents = file_get_contents(‘http://exemplo/teste.php’, null, $context);

Quando não for necessário ler o retorno da requisição, basta chamar a url com fopen passando o contexto como quarto argumento.
5 – fazer download de um arquivo remoto

Vale lembrar que a maioria das funções de stream e filesystem aceitam URLs completas e fazem uso da abstração do protocolo. O que eu vejo muita gente esquecer é que isso inclui a função copy:
$url = “http://userserve-ak.last.fm/serve/500/4349551/Terri+Clark.jpg”;

copy($url, ‘/tmp/’ . urldecode(basename($url)));

O trecho acima vai baixar a imagem remota e salvar no arquivo local /tmp/Terri Clark.jpg. E caso não seja óbvio, “local” se refere a quem está executando o script PHP, que no caso será o seu servidor caso seja um script web, e não o cliente que está acessando pelo browser.

Se o objetivo for realmente repassar o conteúdo remoto para o cliente que estiver acessando pelo browser, o script é igualmente simples:
$url = ‘http://userserve-ak.last.fm/serve/500/4349551/Terri+Clark.jpg’;

$handle = fopen($url, ‘r’);

$meta_data = stream_get_meta_data($handle);

// Repassa todos os headers do servidor remoto para o nosso cliente
foreach ( $meta_data[‘wrapper_data’] as $header ) {
header($header);
}

// Repassa o conteúdo para o nosso cliente
fpassthru($handle);

Considerando que estamos apenas testando a funcionalidade. Ter um script de proxy totalmente funcional é bem mais complexo, e certamente já tem algo pronto por aí.
6 – fazer cálculo com data

Dentre todas as simplificações possíveis, a que mais costuma comover é a função strtotime. Pra quem já está acostumado, parece que não faz mais do que sua obrigação. Mas pra quem ainda faz cálculos com data multiplicando por 86400, chega a parecer mágico:
echo ‘Amanhã: ‘, strftime(‘%A’, strtotime(‘tomorrow’));
// Amanhã: domingo

echo ‘Próxima segunda: ‘, strftime(‘%d de %B de %Y’, strtotime(‘next monday’));
// Próxima segunda: 01 de junho de 2009

echo ‘Vencimento: ‘, strftime(‘%d/%m/%Y’, strtotime(‘+3 months’));
// Vencimento: 30/08/2009

Mais exemplos você mesmo pode ver no manual do PHP ou na página de Date Input Formats do projeto GNU. Para o nome dos meses e dias da semana ficarem em português, utilize setlocale(LC_TIME, ‘pt_BR’); antes de chamar a função strftime.
7 – escapar sql e html

Felizmente nunca mais vi nenhum script com aberrações anti-sql-injection, mas há algum tempo era possível encontrar pessoas removendo palavras-chave de SQL de todas as strings que íam para o banco de dados. Se o usuário digitasse palavras como select, delete ou drop, elas eram simplesmente removidas da frase. Isso quando o programador não interrompia o script e acusava o usuário de estar tentando explorar alguma falha de segurança. Eu juro, isso existia.

Ao trabalhar com PDO, a melhor opção (pra não dizer a única!) é utilizar prepare e execute pra separar a query em si dos seus parâmetros:
$conexao = new PDO(‘mysql:dbname=banco;host=localhost’, ‘login’, ‘senha’);

$uf = ‘RJ’;
$idade = 18;

$sth = $conexao->prepare(‘SELECT nome FROM pessoa WHERE uf = ? AND idade > ?’);

$sth->execute(array($uf, $idade));

while ( $row = $sth->fetch() ) {
echo $row[‘nome’];
}

Se estiver utilizando drivers nativos, veja as funções mysql_real_escape_string ou mysqli_prepare e mysqli_stmt_bind_param, dependendo da extensão. Certamente outros bancos de dados têm a mesma funcionalidade.

A única preocupação é garantir que os parâmetros não se misturem com a query; não precisa inventar moda e remover o que o usuário digitou.

Outra confusão comum é ao escapar HTML. O objetivo é evitar que o texto digitado por um usuário seja interpretado pelo browser de todos os usuários do site.

Conceitualmente, esta é uma responsabilidade da camada de exibição. O template é que deve utilizar htmlspecialchars antes de gerar a saída na tela, e não antes de salvar no banco. Isso garante que o conteúdo que está no banco é fiel ao que foi digitado pelo usuário e pode ser reaproveitado em outras mídias além do HTML.

O que pode e deve ser feito é filtrar conteúdo realmente indevido, como caracteres inválidos ou espaços extras, dependendo da aplicação.

FONTE: http://garotosopa.wordpress.com/2009/05/30/7-coisas-simples-em-php-que-alguns-ainda-complicam/

Processo repquota -auv consumindo tudo da máquina whm/cpanel

Se o processo repquota -auv está matando sua máquina Centos/Redhat com WHM/CPANEL, nada de desespero, o esquema é observar se o item abaixo está marcado:

Se ao suspender contas em seu WHM, você enfrentar problemas com LOAD, desabilite em “Tweak Settings” a função abaixo:

“Use Safe Quota Setting (quotas will be disabled, adjusted, and then re-enabled). This option should be enabled if you are having problems with lost disk quotas or other quota system corruption. Under software raid and other circumstances enabling this option will degrade server performance.”

Caso não, marque-o!

Fazendo análise de disco e análise básica de um servidor

dmesg | grep -i err

Irá verificar erros recentes, problemas de RAM, aplicativos gerando qualquer log de erro significativo pro sistema operacional

tail -f -n XXXXX /var/log/messages

Similar ao anterior. XXX é o numero de linhas para trás. Sempre que o servidor travar, procure as ultimas entradas neste arquivo antes do travamento.

hdparm -Tt /dev/sda (sda, sdb, md0… seja qual for seu disco)

Te dá um relatório de leitura e escrita pro seu disco.

Os valores mínimos aceitáveis são:
Timing cached reads superior a 700
Timing buffered disk reads superior a 25

Se estiver inferior, é grande chance de problema no disco.

Faz um “top” e acompanha o parametro “wa” ou “iowait”.

Este parametro é o quanto seu sistema operacional espera por leitura/escrita do disco. Se durante 5 minutos esse parametro se mantiver muito alto (a cima de uns 60-70%), pode indicar sobrecarga do servidor e/ou problema no disco.

Servidor travou. Será que é Firewall?

Não é dificil acontecer. As vezes o firewall pode estar em um nível de segurança muito alto (acontece muito com o CSF), e o servidor barra todo o tráfego sainte. Tente desativar o Firewall por alguns dias. Não é nada bom ficar sem firewall, mas ir por eliminação nunca faz mal. O APF é uma boa alternativa de firewall pra Linux.

Se usar o CSF, nunca esqueça de sempre fazer update nele.

Alugue um KVM remoto

Outra dica nossa, seria pedir a instalação de um KVM remoto. Desta forma você consegue verificar de forma segura a temperatura do processador, gabinete e outros parametros. Quando o servidor travar, você terá acesso total a máquina e poderá investigar uma possível mensagem de erro no sistema (se houver).

É basicamente isso.. Existem muitas variáveis. Principalmente quando muitos clientes rodam aplicações que desconhecemos.

problema ao compilar o mod_ruby no centos 5.3

Ao rodar o comando:

./configure.rb –with-apr-includes=/usr/include/apr-1

A saída está abaixo:

checking for a BSD compatible install… /usr/bin/install -c
checking whether we are using gcc… yes
checking Ruby version… 1.8.5
checking for static Apache module support… no
checking for dynamic Apache module support… yes
creating Makefile
creating libruby.module
creating doc/Makefile

Se você, ao tentar rodar o make recebe isto aqui:

apachelib.c: In function .ap_chdir_file.:
apachelib.c: 149: take care: the returnvalue of .chdir ., declared with .warn_unused_result. attribut, is ignored
apachelib.c: 154: take care: the returnvalue of .chdir ., declared with .warn_unused_result. attribut, is ignored
apachelib.c: In function .rb_init_apache. :
apachelib.c: 374: error: .OPT_INCNOEXEC. undeclared (first use in this function)
apachelib.c: 374: error: (Each undeclared identifire is reported only once
apachelib.c: 374: error: for each function it appears in.)
make: *** [apachelib.o] error 1

FICA tranquilo, a saída está aqui:

abra o arquivo apachelib.h e dentro dele, abaixo das linhas:

#ifndef APACHELIB_H
#define APACHELIB_H

informe

#define OPT_INCNOEXEC 32 /* added *

se rodar eu quero uma caixa de BIZ!

Email de um domínio não envia para o próprio domínio usando google apps whm cpanel

Se você está confuso porque seu cliente envia emails para os outros mas não consegue enviar para ele mesmo (como nobody – caso de scripts php), e você usa whm/cpanel + centos ou redhat e não sabe o que fazer, talvez passou desapercebido de alguns pontos, vide abaixo:

A zona MX está apontando para o google?
A zona txt está dando autoridade ao google?

Caso ambos acima estejam 100% (100% MESMO) verifique se no arquivo /etc/remotedomains o nome do domínio está presente.
Caso não, adicione o domínio manualmente no /etc/remotedomains e verifique se ele existe no /etc/localdomains, caso sim, remova-o dali e tudo estará resolvido.

Vendo Licença Zend Studio 6.1.x

Para muitos esta será uma grande notícia, estou vendendo a licença que adquiri há menos de 2 meses do ZendStudio, para os interessados somente ressalto que no site da zend o preço médio (hoje) é de R$ 780 reais aproximadamente.
Como muitos já me conhecem e sabem que só dou dica de peixe grande, desta vez repasso a licença para o felizardo por somente R$ 300 a vista!

Abraços e quem estiver interessado favor -> whilelive@gmail.com

How to install broadcom bcm43 on Fedora 10 – como instalar broadcom fedora 10

Gente, nada de pânico, para deixar a coisa na faixa sigam os passos abaixo:

su –
rpm -Uvh http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm
rpm -Uvh http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm
yum update
yum install broadcom-wl

Fonte por Little_oak (admin do http://www.nerdblog.info)

Estou recebendo a mensagem: Device: /dev/hda, 1 Currently unreadable (pending)

Se você está recebendo a mensagem no seu arquivo /var/log/messages:

Device: /dev/hda, 1 Currently unreadable (pending)

Podendo ser /dev/sdb ou qualquer outra indicação de disco saiba que o hd em questão está “pensando em ir para o saco”, por isso, já mantenha um de reserva.
E se isto é por parte de um idc, solicite a troca de disco imediatamente.

Diga postada por:

http://nerdblog.info

Problema na instalação ou Uso do IonCube no Plesk Linux

Se você está com problemas na instalação do IonCube no plesk, ou percebe que há conflitos com o mesmo após ter instalado SEUS PROBLEMAS ACABARAM.

execute:

grep -iR ioncube /etc/php*

Caso a resposta seja:

/etc/php.d/ioncube.ini:zend_extension=/usr/lib/php/ioncube/ioncube_loader_lin_5.2.so
/etc/php.d/ioncube-loader.ini:zend_extension=/usr/lib/php/modules//php_ioncube_loader_lin_5.1.so

Acesse para resolver -> http://www.nerdblog.info/2009/05/03/problema-na-instalacao-ou-uso-do-ioncube-no-plesk-linux/