出现这个错误消息,有什么建议吗?
允许内存大小为33554432字节已耗尽(已尝试分配 43148176字节)的PHP
出现这个错误消息,有什么建议吗?
允许内存大小为33554432字节已耗尽(已尝试分配 43148176字节)的PHP
当前回答
做的事情:
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;
其他回答
在Wordpress中切换到一个新主题后,我收到了同样的错误信息。PHP运行的是5.3版本,所以我切换到了7.2。这解决了问题。
你可以通过执行下面的代码来增加php脚本的内存:
ini_set('memory_limit','-1'); // enabled the full memory available.
并且在脚本中取消分配不需要的变量。
如果你正在使用Laravel,那么可以使用以下方法:
public function getClientsListApi(Request $request){
print_r($request->all()); //for all request
print_r($request->name); //for all name
}
而不是
public function getClientsListApi(Request $request){
print_r($request); // it show error as above mention
}
如果你想读取大文件,你应该一点一点地读取,而不是一次读取。 这是一个简单的数学:如果您一次读取一个1mb大的文件,那么同时至少需要1mb的内存来保存数据。
所以你应该使用fopen & fread一点一点地阅读它们。
I was also having the same problem, looked for phpinfo.ini, php.ini or .htaccess files to no avail. Finally I have looked at some php files, opened them and checked the codes inside for memory. Finally this solution was what I come out with and it worked for me. I was using wordpress, so this solution might only work for wordpress memory size limit problem. My solution, open default-constants.php file in /public_html/wp-includes folder. Open that file with code editor, and find memory settings under wp_initial_constants scope, or just Ctrl+F it to find the word "memory". There you will come over WP_MEMORY_LIMIT and WP_MAX_MEMORY_LIMIT. Just increase it, it was 64 MB in my case, I increased it to 128 MB and then to 200 MB.
// 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');