PHP允许的内存大小在Laravel / Intervention中耗尽

时间:2018-02-24 15:34:18

标签: php laravel nginx upload intervention

我有一个网页,可以将图片上传到我的API Laravel Project。 它工作,直到我上传大小很大或等于 2mb 的图像,它运行在nginx 500错误中:

2018/02/24 15:57:50 [error] 3420#3420: *19 FastCGI sent in stderr: "PHP message: PHP Fatal error:  Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes) in /var/www/project-folder/vendor/intervention/image/src/Intervention/Image/Gd/Decoder.php on line 136
PHP message: PHP Fatal error:  Allowed memory size of 134217728 bytes exhausted (tried to allocate 73728 bytes) in /var/www/project-folder/vendor/composer/ClassLoader.php on line 444" while reading response header from upstream, client: *IP*, server: api.website.com, request: "POST /api/v1/posts HTTP/1.1", upstream: "fastcgi://unix:/var/run/php/php7.0-fpm.sock:", host: "api.website.com"

我在堆栈溢出和谷歌中读到了大量相同的问题,但似乎没有任何效果。

仔细阅读错误消息我可以理解,从我的PHP配置中,网站可以采用 134217728字节内存,但尝试分配 73728字节失败:它是否有任何意义? 它只允许最大128mb的0.7mb内存!

另一个陌生的事情是,从我加载的php.ini文件(运行php -i | grep 'php.ini'我得到消息Loaded Configuration File => /etc/php/7.0/cli/php.ini)我可以读取值:

  1. memory_limit => 256M => 256M
  2. post_max_size => 16M => 16M
  3. upload_max_filesize => 16M => 16M
  4. 我已经尝试重新启动php-fm,重新启动服务器,将ini_set('memory_limit','256M');放在我的php类中的干预代码之前但没有任何反应。

    为什么会这样? 如果我在php配置中有256M / 16MB,为什么128MB / 0.7MB?

    由于

1 个答案:

答案 0 :(得分:0)

你应该编辑这个文件

/etc/php/7.0/fpm/php.ini

并尝试从该ini文件中分配内存

摘自here

  

一般来说,PHP二进制文件时使用cli/php.ini文件   从命令行调用。你可以检查运行php --ini   来自命令行。

     当PHP作为FPM运行时,将使用

fpm/php.ini - 就是这种情况   使用nginx安装。您可以检查是否正在呼叫phpinfo()   来自您的网络服务器提供的php页面。