我想找到这个错误的原因,但我失败了。我已经在我的服务器上安装了PhpMyAdmin,现在每页的页脚都出现了这个错误:
致命错误:第0行的Unknown中允许的内存大小为134217728个字节(尝试分配10934248个字节)
正如你所看到的,我已尝试升级memory_limit(从2MB到128MB),但我仍然遇到此错误。现在每次我登录PhpMyAdmin控制台时都会出现,如果我不进行任何操作,也会出现。你有什么建议吗?
我试图按照我在网上找到的一些答案,但似乎没有人解决问题。此外,我找不到抛出错误的文件,因为它是“未知”,我无法理解谁会要求这么多的内存。
答案 0 :(得分:1)
在php脚本中执行此操作,
ini_set('memory_limit', '-1'); // -1 here implies no limit, you can even set it to a bigger number like '192M' for 192Mb space.
这将覆盖默认的内存限制。
这个问题已经多次回答过了。
答案 1 :(得分:1)
不要使用128MB使用128M,严重的是,尝试一下。
答案 2 :(得分:1)
我意识到这是一个老问题,但我今天开始在运行Linode虚拟服务器的Apache上遇到同样的问题。就我而言,解决方案只是启用Zend Opcache 。它由于'/etc/php5/apache2/conf.d/'目录中的一个ini文件中的错误而被禁用。
我遇到了间歇性的错误,大多数时候页面和图像都会加载得很好,但偶尔会出现故障。图像将被破坏,而不是看到一个页面,我会得到“连接错误”。
这些是我在Apache的error.log文件中看到的一些其他错误:
[core:notice] [pid 8186] AH00052: child pid 9008 exit signal Segmentation fault (11)
[core:notice] [pid 8186] AH00052: child pid 9007 exit signal Aborted (6)
*** Error in `/usr/sbin/apache2': free(): invalid pointer: 0x00007f56840b63c0 ***
当然臭名昭着:
[:error] [pid 8829] [client nnn.nnn.nnn.n:24471] PHP Fatal error:
Allowed memory size of 134217728 bytes exhausted (tried to
allocate 94008222532912 bytes) in Unknown on line 0, referer:
https://www.mysiteurlhere.com/node/page
启用zend opcache后,error.log中不再有错误,一切正常。
答案 3 :(得分:0)
如果php.ini的更改对您没有影响,请尝试更改phpmyadmin的 config.inc.php 。在大多数情况下,它位于/ etc / phpmyadmin。在?>
标记之前插入行:
$cfg['ExecTimeLimit'] = 300000;
$cfg['MemoryLimit'] = -1;
您可以将$cfg['MemoryLimit']
设置为0.在这种情况下,该值将取自php.ini
答案 4 :(得分:0)
当数据库中的表数超过9400时,我遇到了同样的问题。
仅当我使用phpmyadmin输入对数据库的查询时,问题才出现。一段时间后,在屏幕上开始输入查询后,出现500错误并记录了错误:
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 10934248 bytes) in Unknown on line 0
解决方案是将db_sql_autocomplete.php中的部分代码注释掉,该文件位于phpmyadmin文件夹中。
代码 db_sql_autocomplete.php :
<?php
use PhpMyAdmin\Response;
require_once 'libraries/common.inc.php';
/*
if ($GLOBALS['cfg']['EnableAutocompleteForTablesAndColumns']) {
$db = isset($_POST['db']) ? $_POST['db'] : $GLOBALS['db'];
$sql_autocomplete = array();
if ($db) {
$tableNames = $GLOBALS['dbi']->getTables($db);
foreach ($tableNames as $tableName) {
$sql_autocomplete[$tableName] = $GLOBALS['dbi']->getColumns(
$db, $tableName
);
}
}
} else {*/
$sql_autocomplete = true;
//}
$response = Response::getInstance();
$response->addJSON("tables", json_encode($sql_autocomplete));