我遇到了从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的交换空间。

有帮助吗?

解决方案 2

我只是仔细研究了我正在运行的代码,有人将其硬编码到配置文件中:

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

这超越了我正在做的其他事情。呼。

其他提示

我的第一直觉是猜测PHP正在阅读不同的php.ini。

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

您可以尝试在.htaccess文件中进行设置,这是我必须要做的才能让网站在一台服务器上运行。

以下是我使用的设置:

php_value  upload_max_filesize  50M
php_value  post_max_size  60M
php_value  memory_limit  128M
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top