Ошибка развертывания приложения Symfony 3.4.10: допустимый объем памяти исчерпан StreamHandler.php - PullRequest
0 голосов
/ 25 мая 2018

Контекст

Я пытаюсь развернуть свежее приложение Symfony 3.4.10.Это первый раз, когда я развертываю приложение Symfony.Он хорошо работает в среде разработчиков с использованием встроенного php-сервера.

Я использую nginx в качестве веб-сервера и php-fpm.

Проблема

Когда я пытаюсь добраться до своего приложенияв моих журналах выдается ошибка:

2018/05/25 02:32:03 [error] 15819#15819: *1 FastCGI sent in stderr: 
    "PHP message: PHP Fatal error:  Allowed memory size of 1073741824 bytes exhausted 
    (tried to allocate 20480 bytes) 
    in /var/www/my-project/application/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php 
    on line 107
PHP message: PHP Fatal error: 
    Allowed memory size of 1073741824 bytes exhausted 
    (tried to allocate 20480 bytes) 
    in /var/www/my-project/application/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php 
    on line 107"
    while reading response header from upstream, 
    client: xx.xx.xx.xx, server: preprod.my-website.fr, 
    request: "GET / HTTP/2.0", 
    upstream: "fastcgi://unix:/var/run/php/php7.0-fpm.sock:", 
    host: "preprod.mywebsite.fr"

Страница, которую я пытаюсь загрузить, является просто формой подключения.

Я выделил 1024 МБ в моем php.ini думая, что это было потому, что приложению требовалось больше оперативной памяти при первом вызове.

Что действительно странно, так это то, что журнал сообщает, что объем памяти исчерпан, но объем, который приложение пыталось выделить, действительно низок:20480 bytes выделено на максимальную сумму 1073741824 bytes, я не понимаю, почему это не удается и как это решить.

Мой сайт nginx конфигурация:

server {
    listen 443;
    listen [::]:443;

    server_name preprod.my-website.fr;
    root /var/www/my-project/application/web;

    location / {
        # try to serve file directly, fallback to app.php
        try_files $uri /app.php$is_args$args;
    }

    # PROD
    location ~ ^/app\.php(/|$) {
        fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        include fastcgi_params;
        # When you are using symlinks to link the document root to the
        # current version of your application, you should pass the real
        # application path instead of the path to the symlink to PHP
        # FPM.
        # Otherwise, PHP's OPcache may not properly detect changes to
        # your PHP files (see https://github.com/zendtech/ZendOptimizerPlus/issues/126
        # for more information).
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $realpath_root;
        # Prevents URIs that include the front controller. This will 404:
        # http://domain.tld/app.php/some-path
        # Remove the internal directive to allow URIs like this
        internal;
    }

    # return 404 for all other php files not matching the front controller
    # this prevents access to other php files you don't want to be accessible.
    location ~ \.php$ {
        return 404;
    }

    error_log /var/log/nginx/my-project_error.log;
    access_log /var/log/nginx/my-project_access.log;

    # SSL configuration
    ssl on;
    ssl_certificate /etc/letsencrypt/live/preprod.my-website.fr/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/preprod.my-website.fr/privkey.pem;
}

server {
    listen 0.0.0.0:80;
    server_name preprod.my-website.fr;
    rewrite ^ https://$host$request_uri? permanent;
}

Ответы [ 2 ]

0 голосов
/ 25 мая 2018

Хорошо, я понял, как заставить работать мое приложение!Это была проблема с правами на мои файлы, пользователь php-fpm не мог получить доступ к файлам, и это привело к тому, что Symfony пытался отправить ошибку.

Я не знаю, почему возникло исключение, выданное Symfony LogicException: Missing stream url, the stream can not be opened. This may be caused by a premature call to close(). перегружен лимит памяти, так что если кто-то знает, почему, было бы очень полезно объяснить это!

0 голосов
/ 25 мая 2018

Это имеет смысл:

(1073741824b + 20480b)/1024/1024 = 1024mb

То, что дополнительные 20480b ставят его прямо на пределе.

Вы всегда можете поднять настройку в php.ini, но реальный вопрос - почему это так?потреблять столько памяти?Обычно Symfony потребляет так много?Кроме того, если есть какой-либо тип утечки или неограниченный процесс использования памяти, он может в какой-то момент привести к падению увеличенного объема памяти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...