正在显示此错误消息,有任何建议吗?
在php中允许的内存大小为33554432字节(试图分配43148176字节)
panidarapu.. 305
最后我找到了答案:
只需将以下行添加到您在文件中收到错误的行之前
ini_set('memory_limit', '-1');
它将需要无限的内存使用服务器,它工作正常.
感谢您提供建议的朋友.
最后我找到了答案:
只需将以下行添加到您在文件中收到错误的行之前
ini_set('memory_limit', '-1');
它将需要无限的内存使用服务器,它工作正常.
感谢您提供建议的朋友.
以下是两种增加共享托管限制的简单方法:
如果您有权访问PHP.ini文件,请更改PHP.ini中的行如果您的行显示32M,请尝试64M:
memory_limit = 64M ; Maximum amount of memory a script may consume (64MB)
如果您无权访问PHP.ini,请尝试将其添加到.htaccess文件中:
php_value memory_limit 64M
您的脚本使用了太多内存.如果您的循环已经失控并且您正在创建对象或在循环的每次传递中添加到数组,这通常可以在PHP中发生.
检查无限循环.
如果这不是问题,请尝试通过将它们设置为null来销毁已完成的对象来帮助PHP.例如.$OldVar = null;
检查错误实际发生的代码.您是否希望该线路分配大量内存?如果没有,试着弄清楚出了什么问题......
做:
ini_set('memory_limit', '-1');
永远不会好.如果要读取非常大的文件,最好一点一点地复制它.请尝试以下代码以获得最佳实践.
$path = 'path_to_file_.txt'; $file = fopen($path, 'r'); $len = 1024; // 1MB is reasonable for me. You can choose anything though, but do not make it too big $output = fread( $file, $len ); while (!feof($file)) { $output .= fread( $file, $len ); } fclose($file); echo 'Output is: ' . $output;
不幸的是,很容易在PHP中编程,以比你意识到的更快地消耗内存.复制字符串,数组和对象而不是使用引用会做到这一点,尽管PHP 5应该比PHP 4更自动地执行此操作.但与处理最小的逻辑单元相比,在几个步骤中完整地处理数据集也是浪费一次.经典的例子是使用来自数据库的大型结果集:大多数程序员将整个结果集提取到一个数组中,然后用它循环一次或多次foreach()
.使用while()
循环一次获取和处理一行是更高效的内存.同样的事情适用于处理文件.
如果你想读取大文件,你应该一点一点地阅读它们,而不是一次读取它们.
这是一个简单的数学:如果你一次读取1 MB大文件,那么同时需要至少1 MB的内存来保存数据.
所以你应该用fopen
&一点一点地阅读它们fread
.
我在Laravel 5.6的php7.2中遇到了同样的问题。我只是memory_limit = 128M
根据应用程序的需求增加了php.ini中的变量数量。可能是256M / 512M / 1048M .....现在工作正常。
我也有同样的问题,寻找phpinfo.ini,php.ini或.htaccess文件无济于事。最后,我查看了一些php文件,打开了它们,并检查了内部的代码以获取内存。最终,这个解决方案是我想到的,并且对我有用。我使用的是wordpress,因此此解决方案可能仅适用于wordpress内存大小限制问题。我的解决方案是,在/ public_html / wp-includes文件夹中打开default-constants.php文件。使用代码编辑器打开该文件,然后在作用域下找到内存设置,或者按住Ctrl + F组合键以找到单词“ memory”。在那里,你会过来和。只是增加它,就我而言,它是64 MB,我将它增加到128 MB,然后又增加到200 MB。wp_initial_constants
WP_MEMORY_LIMIT
WP_MAX_MEMORY_LIMIT
// Define memory limits. if ( ! defined( 'WP_MEMORY_LIMIT' ) ) { if ( false === wp_is_ini_value_changeable( 'memory_limit' ) ) { define( 'WP_MEMORY_LIMIT', $current_limit ); } elseif ( is_multisite() ) { define( 'WP_MEMORY_LIMIT', '200M' ); } else { define( 'WP_MEMORY_LIMIT', '128M' ); } } if ( ! defined( 'WP_MAX_MEMORY_LIMIT' ) ) { if ( false === wp_is_ini_value_changeable( 'memory_limit' ) ) { define( 'WP_MAX_MEMORY_LIMIT', $current_limit ); } elseif ( -1 === $current_limit_int || $current_limit_int > 268435456 /* = 256M */ ) { define( 'WP_MAX_MEMORY_LIMIT', $current_limit ); } else { define( 'WP_MAX_MEMORY_LIMIT', '256M' ); } }
顺便说一句,请不要执行以下代码,因为这是不好的做法:
ini_set('memory_limit', '-1');
您可以通过在脚本中的所有代码上方执行以下行来增加允许php脚本的内存:
ini_set('memory_limit','-1'); // enabled the full memory available.
并且还在脚本中分配不需要的变量.
检查这个php库:用PHP释放内存