Erro fatal: tempo máximo de execução de 300 segundos excedido


91

Continuo recebendo este erro de PHP:

Erro fatal: tempo máximo de execução de 300 segundos excedido

Tenho experimentado definindo os meus max_execution_timee os meus max_input_timeconfigurações do php.ini (ambos Apache e CLI) para 0, -1e 4000segundos cada.

E ainda recebo o erro dizendo:

Erro fatal: tempo máximo de execução de 300 segundos excedido

Além disso, meu script roda mais de 300 segundos antes de eu receber esta mensagem

Estou executando o script pela linha de comando.

Também verifiquei o phpinfo()que php.iniestou usando.

Ainda mais interessante, eu tentei definir max_execution_timee max_input_timeconfigurações para 5 segundos e meu script será executado por muito mais de 5 segundos antes de eu obter:

Erro fatal: tempo máximo de execução de 300 segundos excedido


Em que tipo de configuração de servidor você está?
Pekka,

1
Isso é tão estranho que eu tenho o mesmo problema no apache 2.4.18 e no php 7 ... Usando PHPMyAdmin para importar sql .. phpinfo (); relata horários diferentes .. Vou tentar a configuração ini, eu acho :(
Michael Fever

o mesmo problema, tento definir set_time_limit (3603); ini_set ('max_execution_time', 3604); mas ambos não têm efeito, o tempo máximo de execução ainda é 360.
Infor Mat

Respostas:


69

No início do seu script, você pode adicionar.

ini_set('MAX_EXECUTION_TIME', '-1');

2
adicione-o no topo do seu arquivo php
Tules,

2
Esta linha de código eliminará a restrição de tempo máximo de execução de um código, permitindo que um código php seja executado para sempre (teoricamente).
Technotronic de

2
em qual script?
Sagar Kodte de

Ou set_time_limit(0);= mesmo.
Íhor Mé

100

Se você estiver usando WAMP, vá para:

Aumentar a max_execution_timeem php.iniseguida, ir para

C:\wamp\apps\phpmyadmin3.4.10.1\libraries (mude o caminho de acordo com sua instalação)

abrir config.default.phpe alterar o valor para $cfg['ExecTimeLimit']0:

$cfg['ExecTimeLimit'] = 0;

Isso resolverá o problema das importações do PhpMyAdmin.


@Vipin, sua solução me ajudou, especialmente aquele config.default.php ;-)
Rishi Kulshreshtha

Feliz por ajudar ! Saúde :)
Vipin Dubey de

obrigado, após horas e horas de frustração tentando atualizar um banco de dados de 500 MB para uma versão mais recente do moodle ...... Tive sucesso. Especificamente moodle 2.2 - 2.6.
JamesTheProgrammer

2
Obrigado por esta resposta! Ajudou no meu problema depois de perceber que definir o tempo máximo de execução no php.ini não era suficiente!
Rimble

1
config.default.phpé muito explícito sobre não editá-lo, nos dizendo para editar em config.inc.phpvez disso. Tentei encontrar e não consegui, então fiz o meu próprio e adicionei <?php $cfg['ExecTimeLimit'] = 3000; ?>. Isso não fez nada. Resolvi experimentar e deu certo config.default.php!! Como vamos fazer o config.inc.phptrabalho?!?
BillyNair

68

Usuários Xampp

  1. Vamos para xampp\phpMyAdmin\
  2. Abra config.inc.php
  3. Procurar por $cfg['ExecTimeLimit'] = 300;
  4. Defina um valor maior ou mude para 0 para ilimitado
  5. Se não for encontrado, adicione $cfg['ExecTimeLimit'] = 0;(ou um valor maior)
  6. Salve o arquivo e reinicie o servidor

8
Esta é literalmente a única coisa que funcionou para mim. Obrigado por postar. Na minha configuração, $ cfg ['ExecTimeLimit'] = 300; não existia em config.inc.php, então eu o adicionei lá em vez de alterar o valor em config.default.php - há uma mensagem bastante grande informando para não alterar o código desse arquivo;)
Ian

4
obrigado por destacar reiniciar o servidor . ponto esquecível mais importante.
Pradeep Kumar Prabaharan

4
Há uma nota no arquivo config.default.php que diz "Não !! Não Edite". Eu adicionei $ cfg ['ExecTimeLimit'] = 0; ao meu arquivo config.inc.php, pois ele não existia e parecia funcionar.
brandozz

1
esse post salvou meu dia e me ajudou pela segunda vez !!! como posso mais um após 3 meses ???
sabre tabatabaee yazdi

24

Encontrei uma situação semelhante e descobri que o Codeigniter (o framework PHP que eu estava usando) realmente define seu próprio limite de tempo:

Em system / core / Codeigniter.php, linha 106 na versão 2.1.3, aparece o seguinte:

if (function_exists("set_time_limit") == TRUE AND @ini_get("safe_mode") == 0)
{
    @set_time_limit(300);
}

Como não havia outra maneira de evitar a alteração do arquivo principal, removi-o para permitir a configuração por meio do php.ini, além de dar o tempo máximo de execução infinito para uma solicitação CLI.

No entanto, recomendo registrar essa alteração em algum lugar no caso de futuras atualizações de versão CI.


7
OH. MEU. BONDADE. Eu não posso acreditar nisso. Por que diabos o mundo iria limitar o tempo de execução em cima de todos os outros limites de tempo de execução que já existem? Perdi horas nisso. Obrigado por postar.
tolo4jesus

1
Isso é inacreditavel. Comentou a linha e funciona! Por que o CI sobrescreveria o padrão PHP padrão e não forneceria documentação sobre ele ?!
Phil Cross,

Se você está lendo isso e está usando ExpressionEngine (que é construído no CodeIgniter) ... Bem - adivinhe - o EE substitui a substituição do CI! Você precisará editar a /system/codeigniter/system/core/Codeigniter.php linha 106, AND /system/expressionengine/libraries/Core.php, linha 64. Foram três horas divertidas da minha vida descobrindo isso .. .
Jack

@PhilCross se você conhece a função que precisa ser executada por mais tempo, você pode usar a sugestão de Jess e colocar set_time_limit(0);dentro dessa função. Você não precisa mudar o núcleo: esta instrução irá zerar o limite de tempo, então você não precisa se preocupar com outras linhas no núcleo ou em outros pacotes enquanto executa aquela função específica.
Armfoot,

10

Tente algo como o seguinte em seu script:

set_time_limit(1200);

3
set_time_limit(0);faz seu script funcionar para sempre.
Jonathon

24
set_time_limit(0); permite que seu script seja executado para sempre.
Jess Telford

6

Esta é a resposta certa:

vamos para

c:\wamp\apps\phpmyadmin3.4.10.1\libraries\config.default.php

encontrar e definir

$cfg['ExecTimeLimit'] = 0;

reinicie todos os serviços e pronto.


Resposta perfeita, obrigado @llioor
kach

5

vá para xampp / phpmyadmin / libraries / config.default.php

e fazer as seguintes alterações

from  $cfg['ExecTimeLimit'] = ’300′;
to  $cfg['ExecTimeLimit'] = ’0′;

3

Para usuários Xampp

1. Go to C:\xampp\phpMyAdmin\libraries
2. Open config.default.php
3. Search for $cfg['ExecTimeLimit'] = 300;
4. Change to the Value 300 to 0 or set a larger value
5. Save the file and restart the server
6. OR Set the ini_set('MAX_EXECUTION_TIME', '-1'); at the beginning of your script you can add.

1

O tempo de execução padrão da CLI do PHP é infinito.

Isso define o tempo máximo em segundos que um script pode ser executado antes de ser encerrado pelo analisador. Isso ajuda a evitar que scripts mal escritos bloqueiem o servidor. A configuração padrão é 30. Ao executar o PHP na linha de comando, a configuração padrão é 0.

http://gr.php.net/manual/en/info.configuration.php#ini.max-execution-time

Verifique se você está executando o PHP em modo de segurança, porque ele ignora todas as configurações de exec quando está nele.


1

Para AppServ local

Vá para C: \ AppServ \ www \ phpMyAdmin \ libraries \ config.default.php

Encontrar $cfg['ExecTimeLimit'] e defina o valor como 0.

Então vai parecer

$cfg['ExecTimeLimit'] = 0;

1

Se você estiver no xampp e usando phpMyadmin para importar grandes arquivos sql e tiver aumentado o tempo max_execution, o limite máximo de upload de arquivos e tudo o que for necessário E se nenhuma das respostas acima funcionar para você, venha aqui

Vá para a pasta xampp, no meu caso, aqui está o caminho relativo para o arquivo que preciso modificar: C: \ xampp \ phpMyAdmin \ libraries \ config.default.php

/** * maximum execution time in seconds (0 for no limit) * * @global integer $cfg['ExecTimeLimit'] * by defautlt 300 is the value * change it to 0 for unlimited * time is seconds * Line 709 for me */ $cfg['ExecTimeLimit'] = 0;


0

USUÁRIOS DO WAMP:

1) Vá para C: \ wamp \ apps \ phpmyadmin

2) Abra config.inc

3) Adicione $ cfg ['ExecTimeLimit'] = '3600 ′; para o arquivo.

4) Salve o arquivo e reinicie o servidor.

Este arquivo sobrescreve o php.ini e funcionará para você!


0

No meu caso, quando encontrei aquele erro no Phpmyadmin, tentei o MySQL-Front e importei meu banco de dados com sucesso.

Nota: Você ainda pode usar as soluções fornecidas nesta questão para resolver seu problema no Phpmyadmin.


Hier gibt es nichts zu sehen ... :-)
rahul

0

Se as respostas acima não funcionarem, tente verificar seu código ,, Na minha experiência, ter um loop infinito também causará esse problema. Verifique sua instrução else if.


0

No Codeignitor versão 3.0.x o system / core / Codeigniter.php não contém a restrição de tempo, além de inserir

ini_set('MAX_EXECUTION_TIME', -1);  

não funcionará, pois o codeignitor irá sobrescrever isso com sua própria função set_time_limit (). Portanto, você deve excluir essa função do codeignitor ou simplesmente inserir

set_time_limit('1000');

no início do arquivo php se você quiser mudar para 1000 segundos. Defina o tempo como 0 (zero) se quiser executá-lo pelo tempo que quiser.


0

No Xampp, no php.ini você também deve verificar mysql.connect_timeout. Então, por exemplo, mude para:

mysql.connect_timeout = 3600

Esse tempo sempre será contado em segundos (então, 1 hora no meu exemplo)


0

USUÁRIOS MAMP editando php.ini resolve isso - há uma linha:

max_execution_time = 30; Tempo máximo de execução de cada script, em segundos

definir isso para um valor mais alto funcionou.

o arquivo está em php / php5.6.25 / conf / php.ini (obviamente, você precisa molhar o arquivo para a versão php que está usando - você pode descobrir isso nas preferências do MAMP.


0

No wamp em minha configuração onde tenho vários phpmyadmins, os valores nos arquivos de configuração foram substituídos em wamp/alias/phpmyadmin.conf. Eu configurei duas linhas lá:

1 php_admin_value max_execution_time 3600

2 php_admin_value max_input_time 3600

... finalmente funcionou!


-1

Você pode definir o limite de tempo:

ini_set('max_execution_time', 1000000000000000);
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.