sexta-feira, 18 de setembro de 2015

Montar diretório Windows no Linux

Linux: Debian 7

Uma forma de montar um pasta compartilhada do Windows é seguir os seguintes passos:

$ sudo apt-get install cifs-utils

$ sudo mkdir /mnt/pasta

sudo mount -t cifs //ip_da_maquina_windows/pasta_compartilhada /mnt/pasta -o username=usuarioWindows, password=senha,uid=1000,gid=1000,umask=000

Pronto. Dê um ls em /mnt/pasta e veja que já está acessando uma pasta compartilhada do Windows, via linha de comando!


quinta-feira, 17 de setembro de 2015

CodeIgniter - 404 Not Found error

Linux: Debian 7
Apache: 2.4.10 (Debian)
PHP: 5.6.9-0+deb8u1

Ao usar o CodeIgniter, você poderá se deparar com o erro 404, aonde a aplicação não consegue seguir a rota para acessar determinada url, mesmo estando com o seu .htaccess corretamente configurado. O problema está em permitir que o PHP possa usar as configurações no htaccess. Para isso, altere o diretiva AllowOverride que está presente no bloco de diretivas do Directory /var/www, veja:

<Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
</Directory>

No caso acima, a minha configuração não permitia que as instruções do meu .htaccess pudessem ser usadas. Para corrigir isso apenas altere de None para All, na diretiva AllowOverride.

No Debian 7, essa configuração será alterada no arquivo /etc/apache2/sites-available/default, e após a alteração ficará na seguinte forma:

<Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
</Directory>

Feita a alteração, reinicie o apache:

$ sudo service apache2 restart

Dê F5 na sua aplicação e pronto!


Atualização - 30/07/2018


No LDME 2, que usa o Debian 8, o arquivo para a configuração é o /etc/apache2/apache2.conf .

sexta-feira, 4 de setembro de 2015

Problemas de acentuação no PHP, Mysql e/ou HMTL


Desenvolvendo para web, geralmente esbarramos com problemas de acentuação. A grande sacada é sempre usar a codificação UTF-8. Para isso, temos como configurar o uso desse charset no PHP, Mysql e HTML
Veja:

PHP

Quando queremos imprimir acentuações pelo PHP, configure com o comando abaixo, inserindo-o na primeira linha do seu fonte.

header('Content-Type: text/html; charset=utf-8');


Mysql

Se a acentuação vem do banco de dados, faça assim:

$conn = mysql_connect('host', 'user', 'password'); 
mysql_set_charset('utf8',$conn);


HTML

Já no HTML, proceda assim:

<html>
<head>
<title>Títuloda página</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
...
</head>
...
</html>



Se nada disso ainda não deu certo, veja qual a codificação que está sendo usada no seu arquivo, .php, .html, ou qualquer outro formato.
Pelo Linux é fácil de verificar e corrigir. Pelo terminal, caminhe até aonde está seus arquivos e proceda dessa forma:

$ file fonte.php
fonte.php: PHP script, ISO-8859 text, with CRLF line terminators

Veja que a codificação do fonte.php é ISO-8859. Vamos alterar para UTF-8.

$ iconv -f ISO-8859-1 -t utf-8 fonte.php > fonte_new.php
$ file fonte_new.php
impr_notif2_utf8.php: PHP script, UTF-8 Unicode text, with CRLF line terminators


--- Editado em 27 de Janeiro de 2016

Recentemente precisei recodificar muitos arquivos e precisava de um script para isso. Após algumas pesquisas descobri formas práticas de se fazer a recodificação em massa.

for file in *.php
do
    iconv -f cp1251 -t utf8 "$file.new" > "$file" &&
    mv -f "$file.new" "$file"
done
Veja que com esse script criamos um arquivo temporário e logo em seguida o renomeamos para o nome original.

for file in *.php
do
    iconv -f cp1251 -t utf8 "$file" | sponge "$file"
done
Ou em uma linha só:

for file in *.php; do iconv -f iso-8859-1 -t utf8 "$file" | sponge "$file"; done
Já com esse script, não houve a necessidade de criação de um arquivo temporário, pois usamos o comando sponge, que vem do pacote moreutils, podendo ser facilmente instalado a partir do comando:

$ sudo apt-get install moreutils
Feito isso, basta entrar com o seguinte comando para conferir as novas codificações dos arquivos:

$ file --mime *
Agora, facilitando ainda mais, podemos usar o comando recode, instalado a partir do comando:

$ sudo apt-get install recode
Em seguida, entre com o script:

for file in *.php
do
    recode iso-8859-1..utf8 "$file"
done
Ou em uma linha só:

$ for file in *.php; do recode iso-8859-1..utf8 "$file"; done

quarta-feira, 2 de setembro de 2015

Resolvendo o problema de register_globals no PHP 5.4


Para quem ainda não sabe, a configuração no php.ini para habilitar o register_globals não está mais disponível nas versões do PHP 5.4 e mais novas. Contudo, existe um artificio que podemos usar para solucionar problemas encontrados naqueles antigos códigos legados, que tiveram a necessidade de serem transportados para servidores com versões mais novas do PHP, como foi o meu caso.

A solução é muito simples, adicione o seguinte trecho de código:

foreach ($_REQUEST as $key=>$val) 
{
  ${$key}=$val;
}

Assim, ao dar o submit, tudo que estiver sendo enviado, via POST ou GET, será transformado em variáveis a serem usadas no seu fonte.

terça-feira, 1 de setembro de 2015

Comandos mysqldump e source


1.1 Exportando uma base de dados específica:


$ mysqldump -uUsuario -p -B nomeDaBase > /local/base.db

O parâmetro -B serve para que tenha a sintaxe create database no dump da base.
Não é necessário usar uma vez que você já tenha criado a base.

1.2 Importando a base de dados:

Entre no ambiente Mysql:

$ mysql -uUsuario -p

Depois de logado no Mysql, siga com o comando de importação:

mysql> source /local/base.db


2.1 Exportando todos os bancos da base:


$ mysqldump -uUsuario -p --all-databases > /local/bases.db

2.2 Importando as bases de dados:

Entre no ambiente Mysql:

$ mysql -uUsuario -p

Depois de logado no Mysql, siga com o comando de importação:

mysql> source /local/bases.db