1

我正在使用PHP MySQLi 数据库类,在我的本地计算机上一切正常,没有任何问题。但是,当我将项目上传到主机时,出现以下错误:

致命错误:第 678 行 /usr/home/data/site/public_html/classes/MysqliDb.php 中允许的内存大小为 52428800 字节已用尽(尝试分配 50331646 字节)

678MysqliDB.php包含以下命令:

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: 无效的命令 'php_value',可能拼写错误或由未包含在服务器配置,referer:http ://example.org/index.php

4

2 回答 2

4
  1. 查看 PHP 版本,尤其是主机上的 mysqli 是否基于 mysqlnd。您可以为此使用 phpinfo()。如果不是,请更改主机。
  2. 不要贪婪地定义数据库表。如果您只需要存储一页文本,请不要将您的列定义为 longblob,使其成为适度的文本 - 早期版本的 mysqli 尝试根据行定义分配内存以获得最大可能大小,而不是实际数据大小。
  3. 如果您的查询返回的行太多,并且您需要所有这些行,那么使您的查询无缓冲将解决问题。
于 2014-05-30T06:16:48.380 回答
-1

原因是 PHP 已经用尽了配置值 memory_limit 设置的最大内存限制。

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

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

php.ini文件中的配置

memory_limit = 128M
max_execution_time = 19000

另一种选择是增加这个via.htaccess file来解决这个问题。所以它应该如下所示:

php_value memory_limit 128M 
php_value max_execution_time 19000
于 2020-02-07T15:06:25.213 回答