【问题标题】:Fatal error: Maximum execution time of 300 seconds exceeded致命错误:超过 300 秒的最大执行时间
【发布时间】:2011-12-02 14:15:25
【问题描述】:

我不断收到这个 PHP 错误:

致命错误:超过 300 秒的最大执行时间

我已尝试将 php.ini(apache 和 cli)中的 max_execution_time 和 max_input_time 设置分别设置为 0、-1 和 4000 秒。

我仍然收到错误消息:

致命错误:超过 300 秒的最大执行时间

在我收到此消息之前,我的脚本运行了 300 多秒

我正在通过命令行运行脚本。

我还检查了我的phpinfo(),看看我使用的是哪个php.ini。

更有趣的是,我尝试将 max_execution_time 和 max_input_time 设置为 5 秒,而我的脚本将运行超过 5 秒,然后我得到:

致命错误:超过 300 秒的最大执行时间

【问题讨论】:

  • 您使用哪种服务器设置?
  • 这太奇怪了,我在 apache 2.4.18 和 php 7 上遇到了同样的问题...使用 PHPMyAdmin 导入 sql.. phpinfo();报告不同的时间..我猜会尝试ini设置:(
  • 同样的问题,我尝试设置 set_time_limit(3603); ini_set('max_execution_time', 3604);但两者都没有效果,最大执行时间仍然是 360。

标签: php command-line-interface


【解决方案1】:

如果您使用的是 WAMP,请转到:

在php.ini 中增加max_execution_time 然后转到

C:\wamp\apps\phpmyadmin3.4.10.1\libraries(根据你的安装改变路径)

打开 config.default.php 并将 $cfg['ExecTimeLimit'] 的值更改为 0:

$cfg['ExecTimeLimit'] = 0;

这将解决 PhpMyAdmin 导入的问题。

【讨论】:

  • @Vipin,你的解决方案帮助了我,尤其是 config.default.php ;-)
  • 乐于助人!干杯:)
  • 感谢您的回答!在意识到在 php.ini 中设置最大执行时间是不够的后,帮助解决了我的问题!
  • config.default.php 非常明确地表示不编辑它,告诉我们改为编辑config.inc.php。我试图找到它但找不到,所以我自己制作并添加了<?php $cfg['ExecTimeLimit'] = 3000; ?>。这什么也没做。我决定尝试在config.default.php 中进行操作,并且成功了!!我们应该如何让config.inc.php 工作?!?
  • @BillyNair config.inc.php 在 phpmyadmin 根目录中
【解决方案2】:

Xampp 用户

  1. 转到xampp\phpMyAdmin\
  2. 打开 config.inc.php
  3. 搜索$cfg['ExecTimeLimit'] = 300;
  4. 设置更大的值或更改为 0 表示无限制
  5. 如果未找到添加 $cfg['ExecTimeLimit'] = 900;(或 0 表示无限制)
  6. 保存文件并重启服务器

【讨论】:

  • 这实际上是唯一对我有用的东西。所以感谢发帖。在我的设置中, $cfg['ExecTimeLimit'] = 300; config.inc.php 中不存在,所以我将它添加到那里,而不是更改 config.default.php 中的值——有一条相当大的消息指出不要触摸该文件中的代码;)
  • 感谢您突出显示重新启动服务器。最重要的遗忘点。
  • config.default.php 文件中有一条说明“否!!请勿编辑”。我添加了 $cfg['ExecTimeLimit'] = 0;到我的 config.inc.php 文件,因为它不存在并且似乎可以工作。
  • 这篇文章挽救了我的一天,第二次帮助了我!!! 3个月后怎么加一个???
【解决方案3】:

您可以在脚本的开头添加。

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

【讨论】:

  • 将它添加到您的 php 文件的最顶部
  • 这行代码将放弃代码的最大执行时间限制,允许php代码永远运行(理论上)。
  • 在哪个脚本中?
  • 或set_time_limit(0); = 相同。
  • 如果您尝试在 PHPMyAdmin 中执行此操作怎么办? ?如何将它添加到 php 文件的顶部?
【解决方案4】:

我也遇到过类似的情况,原来Codeigniter(我用的PHP框架)居然设置了自己的时间限制:

在 system/core/Codeigniter.php 中,2.1.3 版本的第 106 行出现以下内容:

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

由于没有其他方法可以避免更改核心文件,因此我将其删除以允许通过 php.ini 进行配置,并为 CLI 请求提供无限的最大执行时间。

我建议在未来 CI 版本升级的情况下记录此更改。

【讨论】:

  • 哦。我的。善良。我无法相信这。为什么血腥的世界会在已经存在的所有其他执行时间限制之上限制执行时间?我在这上面浪费了几个小时。感谢您发帖。
  • 这太不可思议了。注释掉这条线并且有效!为什么 CI 会覆盖默认的 PHP 默认值,而不提供关于它的文档?!
  • 如果您正在阅读本文并且正在使用 ExpressionEngine(基于 CodeIgniter 构建)...好吧 - 猜猜看 - EE 会覆盖 CI 的覆盖!您需要同时编辑 /system/codeigniter/system/core/Codeigniter.php 第 106 行和 /system/expressionengine/libraries/Core.php 第 64 行。这是我生命中有趣的三个小时发现.. .
  • @PhilCross 如果您知道需要执行更多时间的函数,您可以使用Jess' suggestion 并将set_time_limit(0); 放在该函数内。您无需更改核心:该指令将重置时间限制,因此您在运行该特定功能时无需担心核心或其他包中的其他行。
【解决方案5】:

对于 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.

【讨论】:

    【解决方案6】:

    在您的脚本中尝试以下内容:

    set_time_limit(1200);
    

    【讨论】:

    • set_time_limit(0); 让您的脚本永远运行。
    • set_time_limit(0); 允许你的脚本永远运行。
    【解决方案7】:

    转到 xampp/phpmyadmin/libraries/config.default.php

    并进行以下更改

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

    【讨论】:

      【解决方案8】:

      这是正确的答案:

      去

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

      查找并设置

      $cfg['ExecTimeLimit'] = 0;
      

      重启所有服务 并完成。

      【讨论】:

      • 完美答案,感谢@llioor
      【解决方案9】:

      对于本地 AppServ

      转到 C:\AppServ\www\phpMyAdmin\libraries\config.default.php

      找到$cfg['ExecTimeLimit']并将值设置为0。

      所以它看起来像

      $cfg['ExecTimeLimit'] = 0;
      

      【讨论】:

        【解决方案10】:

        如果本地服务器中的 xampp 转到 C:\xampp\phpMyAdmin\libraries\config.default.php

        //find $cfg['ExecTimeLimit']= 300;
        //increase this value 
        $cfg['ExecTimeLimit'] = 3000;
        

        【讨论】:

          【解决方案11】:

          PHP 的 CLI 的默认执行时间是无限的。

          这设置允许脚本运行的最长时间(以秒为单位) 在它被解析器终止之前。这有助于防止不良 从捆绑服务器编写脚本。默认设置为 30。 从命令行运行 PHP 时,默认设置为 0。

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

          检查你是否在安全模式下运行 PHP,因为它会忽略所有 time exec 设置。

          【讨论】:

            【解决方案12】:

            MAMP 用户 编辑 php.ini 解决了这个问题 - 有一行:

            max_execution_time = 30 ;每个脚本的最大执行时间,以秒为单位

            将其设置为更高的值会起作用。

            该文件位于 php/php5.6.25/conf/php.ini 中(显然您需要为您正在使用的 php 版本润湿该文件 - 您可以从 MAMP 首选项中找到它。

            【讨论】:

            • 润湿文件帮助我 +1
            【解决方案13】:

            如果您使用 xampp 并使用 phpMyadmin 导入大型 sql 文件,并且您增加了 max_execution 时间、最大文件上传限制和所需的一切如果以上答案都不适合您来这里

            转到您的 xampp 文件夹,这里是我需要修改的文件的相对路径: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;

            【讨论】:

              【解决方案14】:

              WAMP 用户:

              1) 转到 C:\wamp\apps\phpmyadmin

              2) 打开 config.inc

              3) 添加 $cfg['ExecTimeLimit'] = '3600';到文件中。

              4) 保存文件并重启服务器。

              此文件会覆盖 php.ini 并为您工作!

              【讨论】:

                【解决方案15】:

                就我而言,当我在 Phpmyadmin 中遇到该错误时,我尝试了 MySQL-Front 并成功导入了我的数据库。

                注意:您仍然可以使用此问题下提供的解决方案来解决您在 Phpmyadmin 中的问题。

                【讨论】:

                • Hier gibt es nichts zu sehen... :-)
                【解决方案16】:

                如果上述答案不起作用,请尝试检查您的代码,根据我的经验,无限循环也会导致该问题。请检查您的 else if 语句。

                【讨论】:

                  【解决方案17】:

                  在 Codeignitor 版本 3.0.x 中,system/core/Codeigniter.php 不包含时间限制以及插入

                  ini_set('MAX_EXECUTION_TIME', -1);  
                  

                  将不起作用,因为 codeignitor 将使用自己的函数 set_time_limit() 覆盖它。 所以要么你必须从 codeignitor 中删除那个函数,要么你可以插入

                  set_time_limit('1000');
                  

                  如果您想将其更改为 1000 秒,请在 php 文件的开头。 如果您想尽可能长时间地运行它,请将时间设置为 0(零)。

                  【讨论】:

                    【解决方案18】:

                    在 Xampp 上,在 php.ini 中您也必须检查 mysql.connect_timeout。因此,例如,将其更改为:

                    mysql.connect_timeout = 3600
                    

                    该时间总是以秒为单位(在我的示例中为 1 小时)

                    【讨论】:

                      【解决方案19】:

                      在我有多个 phpmyadmin 的配置中,配置文件中的值在 wamp/alias/phpmyadmin.conf 中被覆盖。我在那里设置了两条线:

                      1. php_admin_value max_execution_time 3600

                      2. php_admin_value max_input_time 3600

                      ...终于成功了!

                      【讨论】:

                        【解决方案20】:

                        对于开放服务器

                        modules\system\html\openserver\phpmyadmin\libraries\config.default.php
                        

                        改变

                        $cfg[‘ExecTimeLimit’] = 600
                        

                        【讨论】:

                          【解决方案21】:

                          您可以设置时间限制:

                          ini_set('max_execution_time', 1000000000000000);
                          

                          【讨论】:

                            猜你喜欢
                            • 2015-05-14
                            • 1970-01-01
                            • 2011-01-09
                            • 2013-09-03
                            • 2014-04-20
                            • 2011-07-07
                            相关资源
                            最近更新 更多