2009-11-25 88 views
0

我在从PHP获取更多内存时遇到问题。什么限制了我的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,在Ubuntu 9.04的VPS中运行。 php-cgi进程看起来似乎有点资源匮乏(RES = 25m,VIRT = 187m),但我拥有10m的物理内存和500m的交换空间。

回答

1

我只是凝视着我运行的代码,有人硬编码到一个配置文件这样的:

ini_set('memory_limit', '20M'); 

这是压倒一切的我在做什么。呼。

0

你可以尝试在.htaccess文件中设置它,这是我必须做的,以获得一个网站在一台服务器上工作。

下面是我使用的设置:

php_value upload_max_filesize 50M 
php_value post_max_size 60M 
php_value memory_limit 128M 
+0

我在fastcgi下通过nginx运行它。我已更新我的帖子以提供此(相关)信息。谢谢! – 2009-11-25 21:24:27

1

我的第一直觉就是猜PHP是读不同的php.ini。

在Debian(并且很可能是Ubuntu)中,每个PHP版本(cli,cgi和apache)都有自己的php.ini副本。