【问题标题】:increase memory_limit doesn't work in PHP Container in Docker增加 memory_limit 在 Docker 中的 PHP 容器中不起作用
【发布时间】:2022-11-18 18:03:59
【问题描述】:

我在 Docker 中使用一个容器来托管我的 Laravel 应用程序,这个容器连接到另一个使用 Nginx 来托管它的容器。我正在尝试使用像这样的播种机将 SQL 文件导入到我的 Laravel 应用程序中

$path = public_path('sql/2022_11_16_import_table.sql');
        $sql = file_get_contents($path);
        DB::unprepared($sql);

但是,它显示错误

Symfony\Component\Debug\Exception\FatalErrorException:允许的内存大小为 134217728 字节已耗尽(尝试分配 186885432 字节) 在 /var/www/database/seeds/SqlFileSeeder.php:16

我想这是因为我在 php.ini 中的 memory_limit 是 128M,所以我继续通过更改 PHP 容器内的 php.ini-development 和 php.ini-production 文件来更改它,然后重新启动整个容器和Nginx 容器。然而,当我尝试

php -ini 

尽管 php.ini 文件已更改,但 memory_limit 仍然是 128M=>128M。我也试过 ini_set('memory_limit','200M');但它似乎仍然没有效果。

【问题讨论】:

  • PHP 只读取 php.ini 文件,其他 2 个文件(php.ini-development 和 php.ini-production)作为样板提供,以建立您自己的 php.ini,因此更改时不会影响任何内容。
  • 如果文件太大,为什么不为此使用 MySQL shell?

标签: php laravel docker


【解决方案1】:

您可以在 docker 文件末尾添加一条命令,将 php.ini-productionphp.ini-development 复制到 /usr/local/etc/php/php.ini

是这样的:

RUN cp /usr/local/etc/php/php.ini-production /usr/local/etc/php/php.ini && 
        sed -i -e "s/^ *memory_limit.*/memory_limit = 4G/g" /usr/local/etc/php/php.ini

【讨论】:

    【解决方案2】:

    php.ini-production 文件不会被读取。 PHP 初始化使用 php.ini 文件,这些文件以 .ini 扩展名结尾。您可以在 Docker 中为主要的 php.ini 文件添加 volume,如下所示:

    volumes:
       - 'configs/php.ini:/usr/local/etc/php/php.ini'
    

    php.ini 的内容

     memory_limit = 200M
    

    如果您要在docker compose up 之后手动执行此操作,那么您将需要运行一些命令:

    进入Docker容器

    docker compose -it my_container_name bash
    

    重启PHP-fpmNginx服务

    service php-fpm restart
    
    service nginx reload
    

    【讨论】:

      【解决方案3】:

      感谢您的建议。我使用了基于 2 个文件的 php.ini,在重新加载 nginx 后它按预期工作。或者我也试过 ini_set 就在之前

      $path = public_path('sql/2022_11_16_import_table.sql');
              $sql = file_get_contents($path);
              DB::unprepared($sql);
      

      它也完成了工作。以前我在另一个文件中设置了 ini_set,但在进一步阅读后我意识到它只是为当前工作文件设置的,而不是全局设置的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-07-01
        • 1970-01-01
        • 2020-12-20
        • 1970-01-01
        • 1970-01-01
        • 2012-11-12
        • 1970-01-01
        相关资源
        最近更新 更多