novembro 2017
D S T Q Q S S
« ago    
 1234
567891011
12131415161718
19202122232425
2627282930  

Utilizando Zend Optimizer no PHP 5.3

A Zend, principal empresa que investe no desenvolvimento e manutenção da linguagem PHP lançou a muito tempo atrás o Zend Optimizer, produto que se destinava a proteger o código gerando um pseudo-código criptografado chamado de “Código Intermediário Zend”, além de otimizar a performance do servidores que utilizavam a biblioteca com suporte a estes arquivos, chamada de loader. Depois de algum tempo de evolução, a Zend lançou o Zend Guard que é o sucessor do Zend Optimizer. Ele tem suporte a licenciamento, criptografia melhorada e outras otimizações importantes, sendo um produto muito mais robusto, permitindo que empresas vendam software desenvolvido em PHP sem temer que o código seja acessado.
Acontece que para forçar o mercado a comprar o Zend Guard, eles não disponibilizaram o Zend Optimizer para PHP 5.3, apenas para versões do PHP até a 5.2, criando uma incompatibilidade. Para quem possui um produto que está protegido com Zend Optimizer e deseja utilizar PHP 5.3, descobri que a Zend fornece dentro do seu produto Zend Server uma biblioteca chamada Zend Optimizer Plus, que nada mais é do que o Zend Optimizer portado para o PHP 5.3.
Para instalar esta biblioteca no seu PHP 5.3, sem precisar instalar o Zend Server, siga os seguintes passos:

  1. Baixe o Zend Server, para a sua plataforma:

    Obs: Para quem utiliza PHP 5.3.6, a versão 5.3.5 funciona normalmente.

  2. Descompacte o arquivo, utilizando o comando:
    tar zxvf arquivo.tar.gz
  3. Dentro do diretório criado, vai existir um arquivo chamado zend.7z. Dentro dele está a biblioteca do Zend Optimizer Plus. Para descompactar, acesse o diretório e utilize o 7z (caso você não tenha instalado, pode utilizar o próprio fornecido pelo pacote), utilizando o comando:
    7z x zend.7z
  4. Copie o arquivo zend/lib/optimizerplus/php-5.3.x/ZendOptimizerPlus.so para o diretório de extensões do seu PHP, que normalmente fica em /usr/lib{,64}/php/extensions/.
  5. Edite o arquivo php.ini do seu sistema e adicione a seguinte configuração ao final do arquivo:
    [Zend]
    zend_extension=/usr/lib64/php/extensions/ZendOptimizerPlus.so
    
    ; Optimizer+ On/Off switch. When set to Off, code is not optimized.
    zend_optimizerplus.enable=1
    
    ; If set to On, use the current directory as a part of the script key
    zend_optimizerplus.use_cwd=1
    
    ; If enabled, the Optimizer+ checks the file timestamps and updates the cache accordingly.
    zend_optimizerplus.validate_timestamps=1
    
    ; How often to check file timestamps for changes to the shared memory storage allocation. (units: seconds)
    zend_optimizerplus.revalidate_freq=2
    
    ; Enables or disables file search in include_path optimization
    zend_optimizerplus.revalidate_path=0
    
    ; The verbosity of the Optimizer+ log
    zend_optimizerplus.log_verbosity_level=1
    
    ; The Optimizer+ shared memory storage size. The amount of memory for storing precompiled PHP code in Mbytes. (units: MBytes)
    zend_optimizerplus.memory_consumption=64
    
    ; The maximum number of keys (scripts) in the Optimizer+ hash table
    zend_optimizerplus.max_accelerated_files=2000
    
    ; The maximum percentage of "wasted" memory until a restart is scheduled (units: %)
    zend_optimizerplus.max_wasted_percentage=5
    
    ; Check the cache checksum each N requests
    zend_optimizerplus.consistency_checks=0
    
    ; How long to wait (in seconds) for a scheduled restart to begin if the cache is not being accessed (units: seconds)
    zend_optimizerplus.force_restart_timeout=180
    
    ; The location of the Optimizer+ blacklist file
    zend_optimizerplus.blacklist_filename=
    
    ; If enabled, a fast shutdown sequence is used for the accelerated code
    zend_optimizerplus.fast_shutdown=0
    
    ; A bitmask, where each bit enables or disables the appropriate Optimizer+ passes
    zend_optimizerplus.optimization_level=0xfffffbbf
    
    ; Enables or disables the optimization passes that may take significant time, based on an internal runtime calculation
    zend_optimizerplus.enable_slow_optimizations=1
    

    Obs: Você também pode encontrar estas configurações no arquivo de exemplo fornecido no Zend Server em zend/etc/conf.d/optimizerplus.ini.

  6. Agora basta testar o PHP, utilizando o cliente de linha de comando:
    php -v

    Deve retornar algo como:

    PHP 5.3.6 with Suhosin-Patch (cli) (built: Apr 19 2011 23:13:41) 
    Copyright (c) 1997-2011 The PHP Group
    Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies
        with the ionCube PHP Loader v4.0.10, Copyright (c) 2002-2011, by ionCube Ltd., and
        with Zend Optimizer+ v4.1, Copyright (c) 1999-2010, by Zend Technologies
        with Zend Guard Loader v3.3, Copyright (c) 1998-2010, by Zend Technologies
  7. Caso deseje ver a documentação do Zend Optimizer Plus, ela é fornecida também junto com o Zend Server, e está acessível em zend/gui/html/help/zendoptimizerplus.html.

Agora é só testar utilizando seus arquivos encodeados com Zend Optimizer.

Comentários estão bloqueados.