在php中允許內存大小33554432字節用盡(試圖分配43148176字節)



Answers

以下是增加共享主機限制的兩個簡單方法:

  1. 如果您有權訪問PHP.ini文件,請更改PHP.ini中的行如果您的行顯示32M,請嘗試64M: memory_limit = 64M ; Maximum amount of memory a script may consume (64MB) memory_limit = 64M ; Maximum amount of memory a script may consume (64MB)

  2. 如果您無法訪問PHP.ini,請嘗試將其添加到.htaccess文件中: php_value memory_limit 64M

Question

這個錯誤信息正在呈現,有什麼建議?

在php中允許內存大小33554432字節用盡(試圖分配43148176字節)




ini_set('memory_limit', '-1');



ini_set('memory_limit', '-1');

在php標籤打開後在你的index.php頂部




我也有同樣的問題,尋找phpinfo.ini,php.ini或.htaccess文件無濟於事。 最後,我看了一些php文件,打開它們並檢查了內部的代碼。 最後,這個解決方案是我出來的,它對我有用。 我使用wordpress,所以這個解決方案可能只適用於wordpress內存大小限制問題。 我的解決方案,在/ public_html / wp-includes文件夾中打開default-constants.php文件。 用代碼編輯器打開該文件,並在wp_initial_constants範圍內找到內存設置,或者只需Ctrl + F即可找到單詞“memory”。 在那裡您將通過WP_MEMORY_LIMITWP_MAX_MEMORY_LIMIT 。 只是增加它,在我的情況下是64 MB,我增加到128 MB,然後增加到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');



正在做:

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;



如果你想閱讀大文件,你應該一點一點地閱讀它們,而不是一次閱讀它們。
這很簡單:如果您一次讀取1 MB大文件,則至少需要1 MB的內存才能保存數據。

所以你應該使用fopenfread一點一點地閱讀它們。




wordpress用戶添加行:

@ini_set('memory_limit', '-1');

在wp-settings.php中,您可以在wordpress安裝的根文件夾中找到它




在Wordpress中切換到新主題後,我收到相同的錯誤消息。 PHP運行的是5.3版本,所以我切換到7.2。 這解決了這個問題。




Related