允许的内存大小

时间:2014-05-30 06:08:23

标签: php .htaccess mysqli memory-limit

我使用PHP MySQLi Database Class并在我的本地计算机上一切正常运行。但是,当我将项目上传到主机时,出现以下错误:

Fatal error: Allowed memory size of 52428800 bytes exhausted (tried to allocate 50331646 bytes) in /usr/home/data/site/public_html/classes/MysqliDb.php on line 678

来自MysqliDB.php

678 包含以下命令:

call_user_func_array(array($stmt, 'bind_result')`, $parameters);

当我在php_value memory_limit 64M文件中输入.htaccess时,我收到此错误:

[Fri May 30 11:03:18 2014] [alert] [client 37.98.159.18] /usr/home/data/site/public_html/.htaccess: Invalid command 'php_value', perhaps misspelled or defined by a module not included in the server configuration, referer: http://site.org/index.php

2 个答案:

答案 0 :(得分:3)

  1. 检查PHP版本和 - 尤其是 - 如果主机上的mysqli是基于mysqlnd的。你可以使用phpinfo()。如果不是,请更改主机。
  2. 不要在数据库表定义中贪婪。如果您只需要存储一页文本,不要将列定义为longblob,请将其设置为适度文本 - 早期版本的mysqli尝试根据行定义(而不是实际数据大小)为最大可能大小分配内存。

答案 1 :(得分:-1)

原因是因为PHP耗尽了配置值memory_limit设置的最大内存限制。

通常,此PHP配置值的默认值非常低,为8MB或16MB。

因此,增加服务器php.ini配置文件中的memory_limit。您可以根据需要将此值从64MB更改为256M或512MB(越小越好)。

php.ini文件中的配置

memory_limit = 128M
max_execution_time = 19000

另一种选择是通过.htaccess file增加它来解决此问题。 因此应如下所示:

php_value memory_limit 128M 
php_value max_execution_time 19000