我遇到了从PHP获取更多内存的问题。
这是错误消息:
Fatal error: Allowed memory size of 20971520 bytes exhausted (tried to allocate 82 bytes) in ...
然而:
我已将php.ini文件中的memory_limit设置为32M:
memory_limit = 32M;
我还尝试在实际脚本中手动覆盖它:
ini_set('memory_limit', '32M');
而且 - 这里是我丢失的地方 - 我已经通过phpinfo()确认这个php.ini文件是使用的实际ini文件,并且memory_limit似乎设置正确。 memory_limit上的这一行给出了:
memory_limit 32M 32M
所以看起来一切都配置正确,但我只得到20971520字节(~20M)。
我还应该在哪里找出这个限制的位置?
编辑:我在nginx / fastcgi下运行php,在VPS上的Ubuntu 9.04上运行。 php-cgi进程看起来似乎有点资源需求(RES = 25m,VIRT = 187m),但我有10m的物理内存空闲和500m的交换空间。
答案 0 :(得分:1)
我的第一直觉是猜测PHP正在阅读不同的php.ini。
在Debian(很可能是Ubuntu)中,每个版本的PHP(cli,cgi和apache)都有自己的php.ini副本。
答案 1 :(得分:1)
我只是仔细研究了我正在运行的代码,有人将其硬编码到配置文件中:
ini_set('memory_limit', '20M');
这超越了我正在做的其他事情。呼。
答案 2 :(得分:0)
您可以尝试在.htaccess文件中进行设置,这是我必须要做的才能让网站在一台服务器上运行。
以下是我使用的设置:
php_value upload_max_filesize 50M
php_value post_max_size 60M
php_value memory_limit 128M