Hi Folks! This is a short article about a common warning we can get when using php without be careful with the settings. It's quite importante in your application to determine the time zone you are in. If you don't do so, you can get warnings such the one below:
Warning: date_default_timezone_get(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier.
To sort it out just add into your application the function date_default_timezone_set('value');
As value you can use any of the supported timezones by PHP, they can be found here.
Enjoy!
References:
http://php.net/manual/en/function.date-default-timezone-set.php
http://php.net/manual/en/timezones.php
Showing posts with label PHP. Show all posts
Showing posts with label PHP. Show all posts
Wednesday, January 9, 2013
Monday, September 24, 2012
Instalando o Symfony
Olá galera! Hoje, como um bom curioso que sou, fui fazer uma instalação do framework Symfony 2 para fins de testes e um possível uso do mesmo no meu website (www.mdnsolutions.com). Como sempre, há muito o que se aprender com o uso de uma nova ferramenta, então espero quer me apreciem este artigo e aprendam tanto quanto eu.
1 As dependências
Bem, já de cara na página de instalação há várias opções de download do Symfony, eu optei por utilizar o Composer para este fim. Contudo também não tinha o composer instalado (e acredito que nem mesmo vocês), então tive que realizar algumas pequenas tarefas antes de qualquer coisa.
1.1 O Composer
Não irei entrar em detalhes sobre o Composer neste artigo, mas você pode encontrar toda a documentação sobre ele aqui, acho de extrema importância saber como essa ferramenta funciona e estar atento as mudanças que ela esta/irá gerar na forma como os desenvolvedores php lidam com a distribuição de pacotes de suas aplicações.
1.1.1 Instalação
Primeira coisa é fazer o download do executável:
Se alguma mensagem de erro pule em sua tela de uma olhada neste artigo. Caso contrário você deveria esta vendo essa mensagem:
Agora vamos tornar o acesso ao binário que baixou global:
A partir de agora você digitar composer no seu console e verá uma lista de comandos que pode utilizar.
2 O Symfony
2.1 Instalação
Uma vez com o Composer funcionando vamos à instalação do nosso framework.
Lembrando que path/ é o local onde você deseja criar seu projeto ex.: /var/www/meu_sf2. Aqui você vê um log que o comando gera.
2.1 Configuração
Lembre-se que você precisa preferencialmente de um servidor Apache 2 e PHP 5.3.8 ou superiores.
Remova o histórico de git que vem no pacote:
Podemos agora verificar se o nosso ambiente de trabalho atende as especificações de um projeto symfony rodando o comando abaixo ou o script "web/config.php" no endereço onde instalou sua aplicação. No meu caso criei um virtual host chamado "local.sf2" e rodei a url "http://local.sf2/web/config.php". (você pode verificar como criar um virtual host neste artigo).
Ele vai te dar uma ideia dos ajuste que você deveria fazer desde seu servidor apache até algumas variáveis do php.ini (ex. aqui).
No meu caso tive que instalar o Intl, uma extensão de internacionalização para executar collation e date/time/number/currency formatação nos scripts php:
, alterar a linha no nano /etc/php5/apache2/php.ini
2.2 Testando
Bem, seu Symfony neste ponto deveria estar instalado e pronto para rodar. O symfony tem um servidor interno que pode ser iniciado com:
Uma página com sua aplicação rodando deve está aparecendo em sua tela. Bem, é isso symfony rodando sucesso ao iniciar o desenvolvimento de sua aplicação.
Happy coding!
Referências:
http://www.symfony.com/
http://getcomposer.org/
http://packagist.org/
http://php.net/manual/en/intro.intl.php
1 As dependências
Bem, já de cara na página de instalação há várias opções de download do Symfony, eu optei por utilizar o Composer para este fim. Contudo também não tinha o composer instalado (e acredito que nem mesmo vocês), então tive que realizar algumas pequenas tarefas antes de qualquer coisa.
1.1 O Composer
Não irei entrar em detalhes sobre o Composer neste artigo, mas você pode encontrar toda a documentação sobre ele aqui, acho de extrema importância saber como essa ferramenta funciona e estar atento as mudanças que ela esta/irá gerar na forma como os desenvolvedores php lidam com a distribuição de pacotes de suas aplicações.
1.1.1 Instalação
Primeira coisa é fazer o download do executável:
$ curl -s https://getcomposer.org/installer | php
Se alguma mensagem de erro pule em sua tela de uma olhada neste artigo. Caso contrário você deveria esta vendo essa mensagem:
$ curl -s https://getcomposer.org/installer | php
All settings correct for using Composer
Downloading...
Composer successfully installed to: /home/medina/composer.phar
Use it: php composer.phar
Agora vamos tornar o acesso ao binário que baixou global:
$ sudo mv composer.phar /usr/local/bin/composer
A partir de agora você digitar composer no seu console e verá uma lista de comandos que pode utilizar.
2 O Symfony
2.1 Instalação
Uma vez com o Composer funcionando vamos à instalação do nosso framework.
$ composer create-project symfony/framework-standard-edition path/ 2.1.2
Lembrando que path/ é o local onde você deseja criar seu projeto ex.: /var/www/meu_sf2. Aqui você vê um log que o comando gera.
2.1 Configuração
Lembre-se que você precisa preferencialmente de um servidor Apache 2 e PHP 5.3.8 ou superiores.
Remova o histórico de git que vem no pacote:
$ rm -rf .git
Podemos agora verificar se o nosso ambiente de trabalho atende as especificações de um projeto symfony rodando o comando abaixo ou o script "web/config.php" no endereço onde instalou sua aplicação. No meu caso criei um virtual host chamado "local.sf2" e rodei a url "http://local.sf2/web/config.php". (você pode verificar como criar um virtual host neste artigo).
$ php ./app/check.php
Ele vai te dar uma ideia dos ajuste que você deveria fazer desde seu servidor apache até algumas variáveis do php.ini (ex. aqui).
No meu caso tive que instalar o Intl, uma extensão de internacionalização para executar collation e date/time/number/currency formatação nos scripts php:
$ sudo apt-get install php5-intl
, alterar a linha no nano /etc/php5/apache2/php.ini
short_open_tag = Off
, instalar o APC do PHP. que você encontra aqui como fazer. E habilitar permissões de escrita para seu apache (nesse caso como é o meu local habilitei com 777)
$ chmod 777 -R app/cache/ $ chmod 777 -R app/logs/
2.2 Testando
Bem, seu Symfony neste ponto deveria estar instalado e pronto para rodar. O symfony tem um servidor interno que pode ser iniciado com:
$ php ./app/console server:run
E então digite em seu browser algo como:
Uma página com sua aplicação rodando deve está aparecendo em sua tela. Bem, é isso symfony rodando sucesso ao iniciar o desenvolvimento de sua aplicação.
Happy coding!
Referências:
http://www.symfony.com/
http://getcomposer.org/
http://packagist.org/
http://php.net/manual/en/intro.intl.php
Instalando o Composer: Erro timezone
Bem, instalando o Composer em meu computador me deparei com a seguinte mensagem:
Some settings on your machine may cause stability issues with Composer.
If you encounter issues, try to change the following:
The date.timezone setting should be provided.
Add the following to the end of your `php.ini`:
; UTC here is an example, use your own timezone, see http://www.php.net/manual/en/timezones.php
date.timezone = UTC
Downloading...
Composer successfully installed to: /home/user/composer.phar
Use it: php composer.phar
Para resolver acesse o php.ini do cli como abaixo:
shell> nano /etc/php5/cli/php.ini
E procure a linha date.timezone adicionando algum favor:
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = 'America/Sao_Paulo'
Pronto, problema resolvido. =)
Saturday, September 15, 2012
PHP: Usando o goto
Olá galera!
Em meus estudos sobre o php 5.3 e 5.4 encontrei um interessante recurso adicionado à essas versões (especificamente >=5.3.0), o GOTO.
O goto pode ser usado para navergar em diferentes blocos do programa. O ponto alvo é especifidaco por uma 'label' seguida de dois pontos, e para se chegar nele usamos o goto seguindo do nome definido na 'label'.
O alvo do goto deve estar dentro do mesmo arquivo e contexto, isso quer dizer que não pode saltar para fora de uma função ou método, tão pouco dentro de um/uma. Você também não pode saltar dentro de nenhum tipo de estrutura de controle loop ou switch. Você pode saltar fora deles, é comum usar o goto no lugar de vários níveis de break;
Uso simples no código:
<?php
echo "Go to: ";
goto middle;<p>
echo 'The Begin';
exit;
middle:
echo 'The middle';
exit;
end:
echo 'The end';
exit;
?>
No caso assim você teria a saída "Go to: The middle".
Uso em um loop:
<?php
for($i=0, $j=50; $i<100; $i++) {
while ($j--) {
if ($j==17) goto end;
}
}
echo "i = " . $i;
end:
echo 'j hit 17';
?>
Neste caso não irá funcionar:
<?php
goto loop;
for($i=0,$j=50; $i<100; $i++) {
loop:
echo 'test';
}
echo "$i = $i";
?>
Dica: goto é usado somente em casos nos quais nenhuma outra instrução ou construção esteja disponível.
Bem, é isso galera, qualquer dúvida só deixar um recado. Até mais.
Saturday, September 8, 2012
[OFF-TOPIC] APC/PHPIZE
Olá meus caros. Estava eu instalando o Symfony Framework em minha máquina de desenvolvimento e para tal tive que instalar o APC do PHP, que por tabela não me pediu para checar o 'phpize'. Bem, ao tentar rodar este último comando recebi a reposta:
Bem, depois de algumas pesquisas descobrir que apenas precisava inserir o verbose:
O tal do APC
Ao tentar instalar o APC tive vários erros pulando na tela constantemente (encontrei vários artigos toscos) tais como "Error 324 (net::ERR_EMPTY_RESPONSE): The server closed the connection without sending any data." quando configurava o APC e entrava acessar a tela "web/app_dev.php". Isso ainda gerava no meu log do apache a linha "symfony[notice] child pid 3341 exit signal Segmentation fault (11)". Tudo por causa do maldito pecl.
Enfim, tudo isso desapareceu com um simples comando:
Instalando no MAC OS Lion
Esse cara foi um pouco mais complicado, mas vamos la:
Instale o PEAR primeiramente:
E em seguida o XCode (Via Apple Store) eo autoconfig:
E finalmente o APC:
medina@dev-env:~$ phpize
Cannot find config.m4.
Make sure that you run '/usr/bin/phpize' in the top level source directory of the module
Bem, depois de algumas pesquisas descobrir que apenas precisava inserir o verbose:
medina@dev-env:~$ phpize -v
Configuring for:
PHP Api Version: 20100412
Zend Module Api No: 20100525
Zend Extension Api No: 220100525
Ridiculamente simples não?
O tal do APC
Ao tentar instalar o APC tive vários erros pulando na tela constantemente (encontrei vários artigos toscos) tais como "Error 324 (net::ERR_EMPTY_RESPONSE): The server closed the connection without sending any data." quando configurava o APC e entrava acessar a tela "web/app_dev.php". Isso ainda gerava no meu log do apache a linha "symfony[notice] child pid 3341 exit signal Segmentation fault (11)". Tudo por causa do maldito pecl.
Enfim, tudo isso desapareceu com um simples comando:
medina@dev-env: sudo apt-get install php-apc
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
php-apc
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 85.8 kB of archives.
After this operation, 246 kB of additional disk space will be used.
Get:1 http://ppa.launchpad.net/ondrej/php5/ubuntu/ precise/main php-apc i386 3.1.11-1~precise+1 [85.8 kB]
Fetched 85.8 kB in 2s (40.0 kB/s)
Selecting previously unselected package php-apc.
(Reading database ... 269688 files and directories currently installed.)
Unpacking php-apc (from .../php-apc_3.1.11-1~precise+1_i386.deb) ...
Setting up php-apc (3.1.11-1~precise+1) ...
Caso você já tenha instalado o APC via PECL remova-o com o comando abaixo:
medina@dev-env: sudo pecl uninstall APC
Pronto, agora seu APC agora esta instalado.
Instalando no MAC OS Lion
Esse cara foi um pouco mais complicado, mas vamos la:
Instale o PEAR primeiramente:
sudo php /usr/lib/php/install-pear-nozlib.phar
pear config-set php_ini /private/etc/php.ini
pecl config-set php_ini /private/etc/php.ini
sudo pear upgrade-all
E em seguida o XCode (Via Apple Store) eo autoconfig:
curl -OL http://ftpmirror.gnu.org/autoconf/autoconf-latest.tar.gz
tar xzf autoconf-latest.tar.gz
cd autoconf-*
./configure --prefix=/usr/local
make
sudo make install
E finalmente o APC:
curl -O http://freefr.dl.sourceforge.net/project/pcre/pcre/8.02/pcre-8.02.tar.gz
tar xvf pcre-8.02.tar.gz
sudo cp pcre-8.02/pcre*.h /usr/include
sudo cp pcre-8.02/pcre.h.generic /usr/include/pcre.h
rm -r pcre-8.02*
export MACOSX_DEPLOYMENT_TARGET=10.7
export CFLAGS="-arch x86_64"
export CXXFLAGS="-arch x86_64"
sudo pecl install apc
Referências:
Tuesday, July 17, 2012
[OFF-TOPIC] Creating a List of Timezones with PHP
Hey guys,
Below you can find how to create a list of timezones with PHP using the native object DateTimeZone. Enjoy!
To use it just write in your code:
Below you can find how to create a list of timezones with PHP using the native object DateTimeZone. Enjoy!
<?php
class TimeZone
{
static $regions = array(
'Africa' => \DateTimeZone::AFRICA,
'America' => \DateTimeZone::AMERICA,
'Antarctica' => \DateTimeZone::ANTARCTICA,
'Asia' => \DateTimeZone::ASIA,
'Atlantic' => \DateTimeZone::ATLANTIC,
'Europe' => \DateTimeZone::EUROPE,
'Indian' => \DateTimeZone::INDIAN,
'Pacific' => \DateTimeZone::PACIFIC,
);
/**
*
* @return array List of locations
*/
static public function getLocations()
{
foreach (self::$regions as $name => $mask) {
$tzlist = \DateTimeZone::listIdentifiers($mask);
foreach ($tzlist as $tz) {
$locations[$name][$tz] = substr($tz, strrpos($tz, '/') + 1);
}
}
return $locations;
}
}
?/>
To use it just write in your code:
<?php
$locations = TimeZone::getLocations();
?>
Thursday, February 3, 2011
Ambiente LAMP no Ubuntu para Iniciantes
Bom dia Galera,
Como dito no artigo anterior vou agora mostrar os comandos para configurar seu ambiente LAMP no Ubuntu. LAMP significa para o Linux, Apache, MySQL, PHP. O guia destina-se a ajudar aqueles que têm muito pouca experiência do uso do Linux.
Instalar o Apache
Para começar, vamos instalar o Apache.
1. Abra o Terminal (Aplicações Acessórios>> Terminal).
2. Copiar / Colar pressione a seguinte linha de código no terminal e digite:
sudo apt-get install apache2
3. O terminal vai pedir que você que você é a senha, digite-o e pressione enter.
Teste Apache
Para se certificar que tudo instalado corretamente, vamos agora testar o Apache para garantir que ele está funcionando corretamente.
1. Abra qualquer navegador e digite o seguinte endereço na web:
http://localhost/
Você deverá ver uma pasta chamada apache2-default /. Abra-a e você verá uma mensagem dizendo "It works!", funciona!
Instalar o PHP
Nesta parte vamos instalar o PHP 5.
Passo 1. Novamente abra o Terminal (Aplicações> Acessórios> Terminal).
Etapa 2. Copiar / Colar a seguinte linha no terminal e pressione enter:
sudo apt-get install php5 libapache2-mod-php5
Etapa 3. Para que o PHP para funcionar e ser compatível com Apache devemos reiniciá-lo. Digite o seguinte código no terminal para fazer isso:
sudo / etc/init.d/apache2 restart
Teste de PHP
Para garantir que não haja problemas com o PHP, vamos fazer um teste rápido.
Passo 1. Na cópia do terminal / cole a seguinte linha:
sudo gedit / var / testphp.php / www
Isto irá abrir um arquivo chamado phptest.php.
Etapa 2. Copiar / colar essa linha no arquivo phptest:
Etapa 3. Salve e feche o arquivo.
Etapa 4. Agora abra seu navegador e digite o seguinte endereço web:
http://localhost/testphp.php
A página deverá ficar assim:
Página de teste PHP
Você tem agora instalado Apache e PHP!
Instale o MySQL
Para terminar este guia até vamos instalar o MySQL. (Nota - Fora de Apache e PHP, MySQL é o mais difícil de configurar, vou dar alguns grandes recursos para qualquer pessoa a ter problemas no final deste guia..)
Passo 1. Mais uma vez abrir o Terminal surpreendente e, em seguida, copiar / colar essa linha:
sudo apt-get install mysql-server
Passo 2 (opcional). Para que outros computadores em sua rede para exibir o servidor que você criou, primeiro você deve editar o "Endereço de ligação". Comece abrindo o terminal para editar o arquivo my.cnf.
sudo gedit / etc / mysql / my.cnf
Altere a linha
bind-address = 127.0.0.1
E mudar o 127.0.0.1 para o seu endereço IP.
Etapa 3. Isto é onde as coisas podem começar a ficar complicado. Comece digitando o seguinte no terminal:
mysql-u root
Na sequência desta copiar / colar essa linha:
'localhost','root' mysql> SET PASSWORD FOR @ = PASSWORD ('yourpassword');
(Não esqueça de mudar yourpassword para uma senha de sua escolha.)
sudo gedit / etc/php5/apache2/php.ini
Agora vamos ter que descomentar a seguinte linha, retirando o ponto e vírgula (;).
Altere esta linha, ou caso ela não exista crie ela:
extension = mysql.so
Para ficar assim:
extension = mysql.so
Agora, basta reiniciar o Apache e está tudo pronto!
sudo / etc/init.d/apache2 restart
Espero que essas dicas tenham sido úteis. Abraços para todos e até a próxima.
Como dito no artigo anterior vou agora mostrar os comandos para configurar seu ambiente LAMP no Ubuntu. LAMP significa para o Linux, Apache, MySQL, PHP. O guia destina-se a ajudar aqueles que têm muito pouca experiência do uso do Linux.
Instalar o Apache
Para começar, vamos instalar o Apache.
1. Abra o Terminal (Aplicações Acessórios>> Terminal).
2. Copiar / Colar pressione a seguinte linha de código no terminal e digite:
sudo apt-get install apache2
3. O terminal vai pedir que você que você é a senha, digite-o e pressione enter.
Teste Apache
Para se certificar que tudo instalado corretamente, vamos agora testar o Apache para garantir que ele está funcionando corretamente.
1. Abra qualquer navegador e digite o seguinte endereço na web:
http://localhost/
Você deverá ver uma pasta chamada apache2-default /. Abra-a e você verá uma mensagem dizendo "It works!", funciona!
Instalar o PHP
Nesta parte vamos instalar o PHP 5.
Passo 1. Novamente abra o Terminal (Aplicações> Acessórios> Terminal).
Etapa 2. Copiar / Colar a seguinte linha no terminal e pressione enter:
sudo apt-get install php5 libapache2-mod-php5
Etapa 3. Para que o PHP para funcionar e ser compatível com Apache devemos reiniciá-lo. Digite o seguinte código no terminal para fazer isso:
sudo / etc/init.d/apache2 restart
Teste de PHP
Para garantir que não haja problemas com o PHP, vamos fazer um teste rápido.
Passo 1. Na cópia do terminal / cole a seguinte linha:
sudo gedit / var / testphp.php / www
Isto irá abrir um arquivo chamado phptest.php.
Etapa 2. Copiar / colar essa linha no arquivo phptest:
Etapa 3. Salve e feche o arquivo.
Etapa 4. Agora abra seu navegador e digite o seguinte endereço web:
http://localhost/testphp.php
A página deverá ficar assim:
Página de teste PHP
Você tem agora instalado Apache e PHP!
Instale o MySQL
Para terminar este guia até vamos instalar o MySQL. (Nota - Fora de Apache e PHP, MySQL é o mais difícil de configurar, vou dar alguns grandes recursos para qualquer pessoa a ter problemas no final deste guia..)
Passo 1. Mais uma vez abrir o Terminal surpreendente e, em seguida, copiar / colar essa linha:
sudo apt-get install mysql-server
Passo 2 (opcional). Para que outros computadores em sua rede para exibir o servidor que você criou, primeiro você deve editar o "Endereço de ligação". Comece abrindo o terminal para editar o arquivo my.cnf.
sudo gedit / etc / mysql / my.cnf
Altere a linha
bind-address = 127.0.0.1
E mudar o 127.0.0.1 para o seu endereço IP.
Etapa 3. Isto é onde as coisas podem começar a ficar complicado. Comece digitando o seguinte no terminal:
mysql-u root
Na sequência desta copiar / colar essa linha:
'localhost','root' mysql> SET PASSWORD FOR @ = PASSWORD ('yourpassword');
(Não esqueça de mudar yourpassword para uma senha de sua escolha.)
sudo gedit / etc/php5/apache2/php.ini
Agora vamos ter que descomentar a seguinte linha, retirando o ponto e vírgula (;).
Altere esta linha, ou caso ela não exista crie ela:
extension = mysql.so
Para ficar assim:
extension = mysql.so
Agora, basta reiniciar o Apache e está tudo pronto!
sudo / etc/init.d/apache2 restart
Espero que essas dicas tenham sido úteis. Abraços para todos e até a próxima.
Subscribe to:
Posts (Atom)