VPS 2 ГБ оперативной памяти и Symfony 3 - недостаточно памяти - PullRequest
0 голосов
/ 11 октября 2018

Я пытаюсь установить проект symfony 3.4 на сервере Debian 8.Я использую Nginx в качестве веб-сервера.

Мой конфигурационный сервер:

  • RAM = 2 ГБ
  • Память 20 ГБ

Установка композитора работает нормально (обновление композитора тоже).У меня был также угловой фронт в том же сервере.Все работало нормально (npm install, ng build, ..).

Но когда я запрашиваю любой маршрут моего API, я получаю ошибку с кодом 500. Я даже не могу получить профилировщик.

Внутри файла журнала nginx я вижу это сообщение об ошибке сообщение журнала , но я настроил php memory_limit = -1.

Мой файл конфигурации nginx:

server {
    listen 80;
    server_name my_server_name;
    root location/of/my/front;
    index index.html index.htm;

    location / {
        try_files $uri $uri/ /index.html;
    }
}


server {
    server_name my_server_name_api;
    root location/of/my/api/web;

    location / {
        try_files $uri /app.php$is_args$args;
    }

    location ~ ^/(app_dev|config)\.php(/|$) {
        fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $realpath_root;
    }

    location ~ ^/app\.php(/|$) {
        fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        include fastcgi_params;
       fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
       fastcgi_param DOCUMENT_ROOT $realpath_root;
       internal;
   }

   location ~ \.php$ {
     return 404;
   }

   error_log /var/log/nginx/project_error.log;
   access_log /var/log/nginx/project_access.log;
}

Есть идеи?Спасибо

1 Ответ

0 голосов
/ 11 октября 2018

Эта ошибка может быть связана с тем, что у вашего файла настроек PHP.ini низкий предел памяти, PHP может иметь установленный предел памяти, который ему разрешено использовать, и обычно он не устанавливается динамически, что означает, что он требует его измененияк значению, которое вы хотите использовать.

Для этого найдите файл php.ini, найдите строку с memory_limit на нем и измените его на:

memory_limit = -1

Это позволит PHP использовать как можно больше оперативной памяти, в некоторых ситуациях это не идеально, и часто вы обнаружите, что большинству веб-сайтов требуется для работы только около 1 ГБ памяти, поэтому попробуйте:

memory_limit = 1024

Вместо этого вы можете посмотреть на другие методы, такие как отключение профилировщика в Symfony, если вы не собираетесь использовать его, так как это самый активный компонент в Symfony.Для этого добавьте этот фрагмент в свой код, и он будет там, где вы хотели бы отключить профилировщик:

if ($this->container->has('profiler')){
    $this->container->get('profiler')->disable();
}

или, если вы хотите отключить глобально, вы можете установить глобальный параметр в конфигурации.

framework:
    profiler:
        collect: false

Вы также можете установить memory_limit с помощью PHP, поместив ini_set('memory_limit', '-1'); в свой основной файл .php.

...