我有一个网页,可以将图片上传到我的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
)我可以读取值:
memory_limit => 256M => 256M
post_max_size => 16M => 16M
upload_max_filesize => 16M => 16M
我已经尝试重新启动php-fm,重新启动服务器,将ini_set('memory_limit','256M');
放在我的php类中的干预代码之前但没有任何反应。
为什么会这样? 如果我在php配置中有256M / 16MB,为什么128MB / 0.7MB?
由于
答案 0 :(得分:0)
你应该编辑这个文件
/etc/php/7.0/fpm/php.ini
并尝试从该ini文件中分配内存
摘自here
一般来说,PHP二进制文件时使用
当PHP作为FPM运行时,将使用cli/php.ini
文件 从命令行调用。你可以检查运行php --ini 来自命令行。
fpm/php.ini
- 就是这种情况 使用nginx安装。您可以检查是否正在呼叫phpinfo()
来自您的网络服务器提供的php页面。