Arquivo

Archive for the ‘PHP’ Category

Resolvendo erro PHP Fatal error!!!

23 de janeiro de 2014 Deixe um comentário
PhpLogo

phpLogo

Resolvendo erro PHP Fatal error:  Maximum execution time of 30 seconds exceeded

Quando alguma aplicação sua der erro no PHP, e o log constar “PHP Fatal error:  Maximum execution time of 30 seconds exceeded …” a solução é simples, basta aumentar a opção max_execution_time do PHP.INI, que deve estar localizada dentro do apache. Tive um problema deste tipo em uma guia gigante de internação onde o php validava alguns campos e em seguida fazia insert’s sucessivos no SQL. Como o xml era muito grande com muitos ítens, ele dava erro por TIMEOUT!

Primeiro vamos identificar onde está o arquivo php.ini. Para isso vamos criar uma página para nos gerar as configurações do php. Dentro do /var/www vamos criar um arquivo chamado infophp.php e inserir as configurações do php que nos exiba as confs dele.

echo "<?php phpinfo(); ?>" > /var/www/infophp.php

Pronto, agora você acessa esta página digitando o ip do seu servidor e a página criada (http://IP/infophp.php)

http://168.168.168.168/infophp.php

Agora você vai procurar duas informações: “max_execution_time” e “Configuration File (php.ini) Path”. A opção max_execution_time lhe dirá em segundos, quanto tempo o PHP esperará antes de dar erro por timeout (PHP Fatal error:  Maximum execution time of 30 seconds exceeded). Já a segunda opção diz onde o arquivo de configuração global do PHP está localizado.

No print abaixo, você conseguirá identificar o caminho do php.ini, que é o arquivo onde ficam todas as configurações globais do PHP. No caso do print abaixo, o caminho seria ‘/etc/php5/apache2’.

Caminho do PHP.ini

Caminho do PHP.ini – Arquivo de configuração global do PHP

No print abaixo, você consegue identificar a opção max_execution_time, que é a opção que diz ao PHP que ele deve esperar tantos segundos antes de dar timeout.

Max_E_T

max_execution_time

No caso do meu max_execution_time, o tempo já está em 60 segundos, mas o default é 30 segundos

Para aumentar seu max_execution_time e evitar que suas aplicações gerem erros por conta de timeout, basta ir no php.ini e alterar a variável. Para o caso de um php com caminho igual ao do print acima, basta executar o comando:

# sed -i "s/max_execution_time = 30/max_execution_time = 60/g" /etc/php5/apache2/php.ini

sed -i “s/max_execution_time = 30/max_execution_time = 60/g” /etc/php5/apache2/php.ini

O comando acima executado diretamento na console altera o arquivo /etc/php5/apache2/php.ini trocando o valor de “max_execution_time =30” para “max_execution_time = 60”.

Ou você pode evitar na mão o arquivo /etc/php5/apache2/php.ini e alterar a opção max_execution_time de 30 apra 60.

Após isso, basta reiniciar o apache2 e executar a sua rotina novamente ver se vai dar problema

service apache2 restart

ou

/etc/init.d/apache2 restart

Ou simplesmente

killall -1 apache2

Prontinho!




Anúncios