sábado, 20 de setembro de 2014

Simfony 2 + OSX Mavericks

Entre consultorias, pintou um simfony p/ resolver, ok. Tempos sem escrever  aqui.

Quer começar seus estudos com Simfony2 no mac osX.

Vamos lá:

Baixe a última versão do Xcode disponível e compatível com sua versão do OSX.

Baixe um gerenciador de pacotes ports-like.
Tem o MacPorts e o HomeBrew , escolha um deles, eu prefiro e uso o MacPorts.
uso: port install ...

O mac osx já traz no seu php uma versão do pear pronta p/ instalar :

1 habilite o pear

Localize ond está o pear e as libs do php
$php -i | grep include_path
include_path => .:/php/includes/:/usr/lib/php/pear => .:/php/includes/:/usr/lib/php/pear

Vá na pasta /usr/lib/php e execute o arquivo install-pear-nozlib.phar
$php install-pear-nozlib.phar
agora vc tem o utilitário pecl .


2 se não tiver o composer baixe e instale :

Baixe e coloque junto com os binários de acesso comum
$ curl -sS https://getcomposer.org/installer | php
$ sudo mv composer.phar /usr/local/bin/composer


3 - Baixe o esquema do simfony pelo composer

Veja em http://symfony.com/doc/current/quick_tour/the_big_picture.html
Seguindo os tour, e fazendo o 1º projeto , talvez o simfony reclame de algumas dependências 
1 - TimeZone 
2 - intl
3 - Optimizador de Cache

Resolvendo 


1  - Timezone

Abra o arquivo /etc/php.ini e .defina o seu timezone.
date.timezone =America/Sao_Paulo


2 - INTL

Instale o intl
$sudo pecl update-channels
$sudo pecl install intl
se reclamar :
configure: error: Unable to detect ICU prefix or no failed. Please verify ICU install prefix and make sure icu-config works.
$sudo port -v install icu
$sudo port -v install pcre

Se deu certo você verá

Build process completed successfully
Installing '/usr/lib/php/extensions/no-debug-non-zts-20100525/intl.so'
about to commit 1215 file operations for intl
successfully committed 1215 file operations
install ok: channel://pecl.php.net/intl-3.0.0
configuration option "php_ini" is not set to php.ini location
You should add "extension=intl.so" to php.ini

Adicione essa opção no php.ini
Marios-Mac-Pro:php surfer$ sudo vi /etc/php.ini
e por volta da linha 862 adicione
extension=intl.so

Confira se habilitou
$ php -i | grep intl
intl
intl.default_locale => no value => no value
intl.error_level => 0 => 0
intl.use_exceptions => 0 => 0


3 - Instale o APC

$sudo pecl install apc

se você tiver esse erro :
In file included from /private/tmp/pear/temp/APC/apc.c:45:
/usr/include/php/ext/pcre/php_pcre.h:29:10: fatal error: 'pcre.h' file not found
#include "pcre.h"
         ^
1 error generated.
make: *** [apc.lo] Error 1
rolling back 211 file operations
ERROR: `make' failed

Talvez precise fazer 2 coisas:

1 - Baixe o command line tools mais atual da versão do seu Xcode no site da apple



Eu vi vários comentários absurdos na internet, inclusive em fóruns respeitados pela comunidade.
Não vi ninguém procurar esse arquivo local.
O pacote está procurando a lib pcre.h no lugar errado. Veja os diretórios de Include -I ( -I. -I/private/tmp/pear/temp/APC -DPHP_ATOM_INC -I/private/tmp/pear/temp/pear-build-rootH9ph8q/APC-3.1.13/include -I/private/tmp/pear/temp/pear-build-rootH9ph8q/APC-3.1.13/main -I/private/tmp/pear/temp/APC -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/li)

Procurando local : obs: se você já fez alguma instalação pelo ports, esse arquivo já existe em sua maquina , e as dependências  também.

$ sudo find / -name "pcre.h"

/opt/local/include/pcre.h .

Resolvendo o problema da compilação :

Vá no diretório /usr/include/ e adicione os alias p/ as libpcre* q estão no diretório encontrado.
Marios-Mac-Pro:include surfer$ pwd
/usr/include
$sudo ln -s /opt/local/include/pcre* .

Confira se criou 
Marios-Mac-Pro:include surfer$ ls -laoh | grep pcre
lrwxr-xr-x    1 root    25B Sep 21 00:55 pcre.h -> /opt/local/include/pcre.h
lrwxr-xr-x    1 root    33B Sep 21 00:55 pcre_scanner.h -> /opt/local/include/pcre_scanner.h
lrwxr-xr-x    1 root    37B Sep 21 00:55 pcre_stringpiece.h -> /opt/local/include/pcre_stringpiece.h
lrwxr-xr-x    1 root    28B Sep 21 00:55 pcrecpp.h -> /opt/local/include/pcrecpp.h
lrwxr-xr-x    1 root    31B Sep 21 00:55 pcrecpparg.h -> /opt/local/include/pcrecpparg.h
lrwxr-xr-x    1 root    30B Sep 21 00:55 pcreposix.h -> /opt/local/include/pcreposix.h

Chame a instalação do apc de novo:

$sudo pecl install apc
Se não souber o q são as perguntas (opções do cache), apenas pressione enter até continuar compilando

e... se deu tudo certo você verá:
Build process completed successfully
Installing '/usr/include/php/ext/apc/apc_serializer.h'
+ create dir /usr/include/php/ext/apc
Installing '/usr/lib/php/extensions/no-debug-non-zts-20100525/apc.so'
about to commit 213 file operations for APC
successfully committed 213 file operations
install ok: channel://pecl.php.net/APC-3.1.13
configuration option "php_ini" is not set to php.ini location
You should add "extension=apc.so" to php.ini

Adicione essa opção no php.ini
Marios-Mac-Pro:php surfer$ sudo vi /etc/php.ini
e adicione por volta da linha 863
extension=apc.so

Confira se habilitou :

$ php -i | grep apc
.....

Se deu tudo certo. ao rodar o check pós criação do projeto, você deve receber essa mensagem:

Marios-Mac-Pro:simfony surfer$ cd simfony/
Marios-Mac-Pro:simfony surfer$ php app/check.php 

Symfony2 Requirements Checker
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

> PHP is using the following php.ini file:
  /etc/php.ini

> Checking Symfony requirements:
  ......................................

                                               
 [OK]                                          
 Your system is ready to run Symfony2 projects 


Veja o esquema de demonstração da aplicação criada:

Marios-Mac-Pro:simfony surfer$ php app/console server:run

Server running on http://127.0.0.1:8000

Acesse pelo navegador 

OBS: Fiz o processo paralelo em um debian, meu ambiente de dev, e a sequência, foi a mesma,
apenas instalando o pacote libpcre3-dev (p/ compilar o apc), e adicionando as extensões nos 2 php.ini (cli e apache)
obtive o mesmo resultado com as seguintes recomendações que ficam p/ outro post:

                                             
 [OK]                                        
 Your system is ready to run Symfony2 projects
                                             

Optional recommendations to improve your setup
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 * When using the logout handler from the Symfony Security Component,
   you should have at least PHP 5.4.11 due to PHP bug #63379 (as a
   workaround, you can also set invalidate_session to false in the
   security logout handler configuration)
   > Install PHP 5.4.11 or newer if your project uses the logout
   > handler from the Symfony Security Component.

 * You should use PHP 5.3.18+ or PHP 5.4.8+ to always get nice error
   messages for fatal errors in the development environment due to PHP
   bug #61767/#60909
   > Install PHP 5.3.18+ or PHP 5.4.8+ if you want nice error messages
   > for all fatal errors in the development environment.

 * short_open_tag should be disabled in php.ini
   > Set short_open_tag to off in php.ini*.


Bons estudos. Qualquer dúvida, poste aqui.
Até a próxima