Arquivos da categoria: Artigos

Artigos da comunidade, por colaboradores.

DOMINANDO O WP-CONFIG.PHP – PARTE 2

este é o segundo artigo da serie Dominando o wp-config.php, acesse este link para ver mais artigos relacionados. Este artigo é destinado tanto para desenvolvedores do CMS – Content Management System – ou em uma tradução livre: Sistema de Gerenciamento de Conteúdo, quanto para pessoas que apenas utilizam ele mas não tem conhecimento em programação, caso no final desse artigo vocês tenham alguma dúvida não deixe de comentar 😉

 

Como aumentar a memoria do PHP

Como aumentar o limite da memória do php no wp-config.php

Se seu wordpress começou a apresentar a mensagem “Fatal Error: Allowed memory size 335544 bytes exhausted (tried to allocate 2975669 bytes) in…” quando estava tentando logar no administrativo ou fazendo alguma tarefa administrativa (ativar tema, instalar plug-in…) é porque você estourou o Memory Limit do PHP, existe varias formas de aumentar esse limite, entre elas pelo php.ini, .htaccess e até mesmo conversando com sua empresa de hospedagem, mas como nosso foco é wordpress, vamos ensinar fazer a mudança pelo wp-config.php.

Tal arquivo fica na raiz da instalação do wordpress (padrão) ao editar ele basta adicionar as seguintes linhas logo após a abertura do arquivo – depois do “<?php”

define(‘WP_MEMOMY_LIMIT’,’96M’);

OBS: Onde ’96M’ é uma variável de quantos megas você quer liberar, normalmente o limite comum do php é de 32M ou 64MB inicialmente, logo 96m é o suficiente para a maioria dos casos.

 

Tela branca da morte

Esse erro é menos comum mas pode acontecer, normalmente acontece quando você tenta acessar seu site ou administrado e simplesmente vê uma tela branca, conforme a imagem abaixo:

white-screen-of-death

Se sua tela está assim, fique calmo e vamos a solução, segundo o codex (bíblia do wordpress) existe varias formas para verificar a origem do erro, entre as mais comuns estão, renomear a pasta de plug-ins que fica em raiz/wp-content/plugins ou na pasta theme que fica em /wp-content/themes, entre outras dicas (link) , uma sacada que eu dou e que pode te poupar muito tempo é ativando o modo deBUG do WordPress (link do codex) para ativar o modo debug é simples, basta procurar no seu wp-config.php a seguinte linha:

define(‘WP_DEBUG’, false);

e mudar o valor do arquivo para true, caso não ache a linha, fique a vontade para adicionar:

debug_wordpress

com isso você poderá ver em que linha está o erro, e já ter uma noção se o erro é por causa de plug-in thema ou se seu core foi corrompido, mais adiante falaremos o que fazer se seu core foi corrompido. entenda por core do wordpress tudo que  é nativo do wordpress , excluindo  plug-ins e temas.

 

Atualizei meu tema ou plug-in e meu wordpress quebrou

Outro erro comum é quando você não ler o aviso do wordpress solicitando um backup antes de qualquer atualização ai você faz a atualização e por algum motivo a atualização da um erro no seu wordpress, com você sem acesso ao painel administrativo uma forma de desativar o elemento causador do erro é renomeando, só por fazer isso você já terá acesso ao administrativo. mas se o Erro não por em um plug-in ou tema mais sim no WordPress, o que fazer? no tópico a seguir vamos abordar isso.

Como reinstalar o WordPress sem perder conteúdo

Se você se deparou com algum erro que não envolve plug-in ou tema a solução mais rápida pode ser instalar o wordpress do zero.  se você tiver tempo você também pode procurar o erro no google. Para fazer isso é simples, precisamos ter em mente que tudo o que você fez em seu blog/site/loja fica em wp-content e no banco de dados (representando pelo arquivo wp-config.php) – digo com as credenciais de acesso salvo.

então você pode deletar o restante dos arquivos e pastas, depois disso basta você baixa a ultima versão do wordpress no site br.wordpress.org no seu pc, remover a pasta wp-content e subir pro servidor – o arquivo wp-config.php não existirá no wordpress antes dele ser instalado.

Em muitos casos isso será a solução dos problemas.

Lembre-se backup é bom quando existe pelo menos backup do backup.

essas foram algumas dicas, em breve colocaremos outras 🙂

gostou? discorda de algo? não deixe de comentar 😉

NOVIDADES DO PHP 7

Olá pessoal, com a versão estável do PHP 7 lançada, muitas pessoas tem se perguntado se vale a pena mudar a versão ou se continuar na versão antiga ainda é a melhor opção. Com esse post irei mostrar algumas novidades que irão fazer você mudar imediatamente para a nova versão da linguagem!!! 😀

Performance

O principal ponto para você correr para a nova versão do PHP é pela sua performance. Quando você mudar a versão, sem alterar nenhuma linha de código, suas aplicações já vão ganhar um UP que vai de 25% à 70% apenas mudando a versão do PHP. Além disso a nova versão consegue responder aproximadamente o dobro de requisições por segundo em comparação à versão anterior.

Remoção de Itens Depreciados

Alguns itens que já estavão nessa condição por algum tempo foram removidos, dessa maneira algumas aplicações podem parar de funcionar corretamente caso ainda utilizem algum desses itens. Os itens removidos foram:

        As tags: <%, <%=, %>, < script language=”php”>;
        A extensão

ereg

        e com isso todas as funções da mesma (devendo utilizar a partir de agora a extensão

PCRE

        );
        A extensão

mysql

        e com isso todas as funções da mesma (devendo utilizar a partir de agora a extensão

mysqli

        ou

PDO

      );

Uniform Variable Syntax

Essa mudança veio para resolver diversas inconsistências ao resolver expressões “variáveis-variáveis”. Vamos entender melhor analisando o código abaixo:

<?php
  class Dog {
    public $name = 'Rex';
    public $age = 1;
  }
  
  $dog = new Dog();
  $property = [
    'first' => 'name',
    'second' => 'age'
  ];
  echo "My dog name is ". $dog->$property['first'];

No PHP 5 a expressão $dog->$property[‘first’] é interpretada de uma forma incoerente com a interpretação padrão (esquerda para direita), pois ela é interpretada da seguinte forma: $dog->{$property[‘first’]}.

No PHP 7 a mesma expressão é interpretada da forma padrão (esquerda para direita) e fica da seguinte maneira: {$dog->$property}[‘first’] fazendo com que essa expressão não funcione no PHP 7, pois $property é um array e não pode ser convertido em uma String.

Mas com essa mudança outras expressões que nas versões anteriores eram inválidas agora passam a ser válidas, vamos ver alguns exemplos:

<?php
  class Dog {
    public static $name = 'Rex';
    public function getRelatives() { 
      return [ 
        'father' => function() {
          return 'Responsible old dog';
        },
        'mother' => function() {
          return 'Kind little dog';
        }
      ];
    }

    public function getWho($relative) {
      return $this->getRelatives()[$relative];
    }

    public function getNewDog() {
      return new Dog();
    }
  }

Com o PHP 7 podemos criar diversas associações aninhadas que não funcionam em versões anteriores como por exemplo:

<?php
  $dog = new Dog();
  echo $dog->getRelatives()['father']();
  echo $dog->getWho('mother')();
  $dog::getNewDog()::$name;

Switch com apenas um default

Nas versões anteriores do PHP podíamos definir diversas cláusulas default em um switch. Lógico que isso não fazia sentido pois apenas a última declarada era utilizada, mas não gerava nenhum erro nem alertas então era um problema difícil de se encontrar, porém agora no PHP 7 quando utilizamos mais de uma cláusula default em um switch o PHP retorna um Fatal Error.

Engine Exceptions

As novas exceptions foram introduzidas para facilitar o tratamento de erros nas aplicações. As Engine Exceptions substituem os Fatal Errors e os Recoverable Fatal Errors, fazendo com que agora possamos capturar essas exceções e tratá-las. As novas exceptions foram introduzidas nessa versão de uma forma para manter a compatibilidade com versões anteriores. Para incorporar as novas exceptions com um impacto mínimo em códigos de versões anteriores, a Hierarquia das Exceptions teve de sofrer algumas mudanças. Veja abaixo:

      Throwable interface

          Exception implements Throwable

              ErrorException extends Exception
              RuntimeException extends Exception
          Error implements Throwable

              TypeError extends Error
              ParseError extends Error
              AssertionError extends Error

Operador de Comparação Combinada (Spacheship Operator)

O operador spacheship( <=> ) foi introduzido para nos ajudar a fazer comparações mais concisas. Veja a expressão abaixo:

<?php
  $a <=> $b

A expressão acima pode nos retornar três resultados diferentes, dependendo do valor das variáveis:

        Retorna

-1

        se

$a

        for menor que

$b

        ;
        Retorna

0

        se

$a

        e

$b

        forem iguais;
        Retorna

1

        se

$a

        for maior que

$b

      ;

Null Coalesce Operator (??)

Esse novo operador veio para diminuir o esforço que gastamos quando nos deparamos com a situação que temos que verificar se determinado valor existe antes de usá-lo. Nas versões anteriores do PHP utilizamos a seguinte maneira:

<?php
  $a = isset($b) ? $b : "default";

No PHP 7 utilizando o novo operador, podemos fazer apenas assim:

<?php
  $a = $b ?? "default";

Scalar Type Hints

Agora podemos finalmente utilizar strings, booleans, integers e floats como Type Hints para nossas funções e métodos. Por padrão os type hints não são restritivos, então se você passar uma string para um parâmetro integer ele vai apenas fazer a conversão sem gerar nenhum erro ou alerta. Porém é possível ativar um Modo Restrito que irá gerar erros quando um tipo diferente do declarado for passado como parâmetro. Vamos entender melhor verificando o código abaixo:

<?php
  function squareNumber(int $number) {
    return $number * $number;
  }

  $a = squareNumber("4");
  var_dump($a);

O código acima não irá gerar nenhum erro ou alerta, pois o Modo Restrito não está ativado, dessa forma quando passamos o valor “4” para nosso método, ele converte o valor para um integer. Caso você queira restringir para que apenas integers possam ser passados para a função squareNumber devemos colocar uma diretiva na primeira linha de nosso script como mostra o exemplo abaixo:

<?php
  declare(strict_types = 1);

  function squareNumber(int $number) {
    return $number * $number;
  }

  $a = squareNumber("4");
  var_dump($a);

Com o Modo Restrito ativado esse código iria gerar um Fatal Error com a seguinte mensagem: Fatal error: Uncaught TypeError: Argument 1 passed to squareNumber() must be of the type integer, string given..

Return Type Hints

Além de podermos declarar os tipos de nossos parâmetros, agora também podemos definir o tipo do retorno de nossos métodos e funções. Igual aos Scalar Type Hints, caso o Modo Restrito não esteja ativado, o valor será convertido automaticamente para o tipo definido no Return Type Hint. Vejamos o exemplo abaixo:

<?php
  function testReturn() : bool {
    return 1;
  }

  var_dump(testReturn());

No código acima o valor do retorno será convertido automaticamente para um boolean. Caso o Modo Restrito esteja ativado o código acima iria produzir um Fatal Error com a seguinte mensagem: Fatal error: Uncaught TypeError: Return value of testReturn() must be of the type boolean, integer returned..

Observações importantes

Lembre-se que os erros descritos em Scalar Type Hints e Return Type Hints podem ser tratados com blocos try/catch e também é muito importante lembrar que você pode utilizar outros tipos em seus métodos e funções, por exemplo objetos, etc.

Conclusão

Espero que esse artigo possa dar uma base nas novidades que o PHP 7 trouxe para nós desenvolvedores e que vocês continuem estudando e aprofundando mais nos estudos da linguagem.

Um grande abraço a todos!!! Espero que o artigo possa ajudar a melhorar seus conhecimentos!!! Até a próxima!!!

TRABALHANDO EM AMBIENTES COM DOMíNIOS DIFERENTES DE FORMA FáCIL NO WORDPRES – MáGICAS NO WP-CONFIG PARTE I

Esse é o primeiro post da série, fazendo mágica no wp-config.

Para quem não conhece ou não esta familiarizado com o WordPress, o wp-config.php é o arquivo de configuração de do cms, que contém diversos defines para configuração da aplicação.

A ideia de escrever uma sequencia de artigos relacionado a um mesmo arquivo surgiu de uma submissão não aceita para uma palestra, na qual queria mostrar as diversas possibilidades do wp-config.php, mostrando que não é apenas um arquivo de configuração de banco de dados. Como não podia deixar de passar o conhecimento para frente, aqui estou eu escrevendo esse humilde primeiro post de uma série de posts relacionado ao wp-config.php.

E nesse arquivo tem diversas possibilidades, algumas delas bem uteis, outra legais e outras no mínimo curiosas.

Mas de inicio, o parte I, merece uma dica bem útil.

Vejo muita gente com grandes dificuldades em manter ambientes de produção, homologação e desenvolvimento, por conta das urls, e por default o WordPress salvar isso na base de dados. Muitas das vezes o usuário quer ir cadastrando informação mesmo sem o site ter ido ao ar, quer que vá com uma carga de dados, mas isso na instalação em outro ambiente que não tenha a url definitiva pode dar prolema.

Diversos sites dão dicas importantes de querys utilizando replace para migrar os domínios de todas imagens, urls de posts e de menu. Mas isso não se faz necessário, no wp-config.php existem diversos defines que podem ser utilizados e dois deles servem justamente para poder facilitar isso.

São os defines a seguir:

define(‘WP_HOME’,’http://novosite.com’);

define(‘WP_SITEURL’,’http://novosite.com’);

Outra ideia maneira é:

define (‘WP_HOME’, ‘http: //’. $ _SERVER [‘SERVER_NAME’]);

define (‘WP_SITEURL’, ‘http: //’. $ _SERVER [‘SERVER_NAME’]);

Correspondem ao Endereço do WordPress (URL), e ao Endereço do site (URL).

Os pontos positivos:

  • Diminui uma requisição no banco, pois esta salva no define e não precisará chegar a base de dados para saber a url.
  • Facilidade de migração para ambientes de desenvolvimento, desenvolvimento e homologação.
  • Facilidade na migração de domínios.

 

Os pontos negativos:

  • Bloqueio da configuração interna da url pelo wp-admin.

 

Em breve, veremos, como cadastrar usuário através do wp-config, como utilizar defines para melhorar a segurança do site e não estamos falando de chaves.

Fonte: http://lenonleite.com.br/2015/12/migrando-dominios-wordpress-com-duas-linhas-magicas-no-wp-config-parte-i/

ARQUITETURA PHP: DECISõES

A tomada de decisões sobre o que utilizar pode ser mais complexa do que parece, apesar de já termos em mente algo que seria mais adequado para uma arquitetura com base no que já utilizamos ou mesmo nas novidades apresentadas pela comunidade, sempre temos que avaliar a realidade do cliente e o foco do projeto, e isso pode mudar completamente o direcionamento das decisões.
Clique e veja o artigo completo…