복붙노트

허용 된 메모리 크기가 33554432 바이트 (43148176 바이트를 할당하려고 시도했습니다.) PHP에서

카테고리 없음

허용 된 메모리 크기가 33554432 바이트 (43148176 바이트를 할당하려고 시도했습니다.) PHP에서

이 오류 메시지가 표시됩니다. 제안 사항은 무엇입니까?

해결법

  1. ==============================

    1.

    마침내 대답을 찾았습니다.

    파일에 오류가 발생하기 전에 아래 줄에 추가하십시오.

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

    서버의 무제한 메모리 사용량이 필요합니다. 정상적으로 작동합니다.

    제안 친구를 주셔서 감사합니다.

  2. ==============================

    2.

    다음은 공유 호스팅의 한도를 높이는 두 가지 간단한 방법입니다.

  3. ==============================

    3.

    스크립트가 너무 많은 메모리를 사용 중입니다. 이것은 PHP에서 자주 발생합니다. 루프가 통제를 벗어 났고 루프를 만들 때마다 객체를 만들거나 배열에 추가하는 경우입니다.

    무한 루프가 있는지 확인하십시오.

    그게 문제가 아니라면, 끝난 객체를 null로 설정하여 PHP를 시도해보십시오. 예 : $ OldVar = null;

    오류가 실제로 발생하는 코드를 확인하십시오. 그 라인이 엄청난 양의 메모리를 할당 할 것으로 기대하십니까? 그렇지 않다면 무엇이 잘못되었는지 알아 내려고 시도하십시오.

  4. ==============================

    4.

    하는 중 :

    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;
    
  5. ==============================

    5.

    불행히도 PHP로 프로그래밍하는 것은 여러분이 깨닫는 것보다 빨리 메모리를 소비하는 방식으로 쉽습니다. 참조를 사용하는 대신 문자열, 배열 및 객체를 복사하면됩니다. PHP 5는 PHP 4보다 자동으로이 작업을 수행하기로되어 있지만, 여러 단계를 거쳐 전체 데이터 세트를 처리하는 것은 또한 가장 작은 논리 단위 한 번에. 고전적인 예제는 데이터베이스의 큰 결과 집합으로 작업합니다. 대부분의 프로그래머는 전체 결과 집합을 배열로 가져온 다음 foreach ()를 사용하여 한 번 이상 반복합니다. while () 루프를 사용하여 한 번에 한 행을 페치하고 처리하는 것이 훨씬 더 효율적입니다. 파일 처리에도 똑같은 일이 적용됩니다.

  6. ==============================

    6.

    대용량 파일을 읽으려면 한 번에 읽지 않고 비트 단위로 읽어야합니다. 단순한 수학입니다. 한 번에 1MB의 대용량 파일을 읽는 경우 데이터를 저장하는 데 동시에 최소 1MB의 메모리가 필요합니다.

    따라서 fopen과 fread를 사용하여 조금씩 읽어야합니다.

  7. ==============================

    7.

    스크립트의 모든 코드 위에 다음 행을 실행하여 PHP 스크립트에 허용 된 메모리를 늘릴 수 있습니다.

    ini_set('memory_limit','-1'); // enabled the full memory available.
    

    또한 스크립트에서 원하지 않는 변수를 할당하십시오.

    이 PHP 라이브러리 확인 : PHP로 메모리 확보하기

  8. ==============================

    8.

    나는 또한 같은 문제가 있었는데 phpinfo.ini, php.ini 또는 .htaccess 파일을 찾지 않았습니다. 마침내 나는 몇몇 PHP 파일을보고, 열어서 메모리 내부의 코드를 검사했다. 마지막으로이 솔루션은 나와 함께 나온 것이고 나에게 도움이되었습니다. WordPress를 사용하고 있었기 때문에이 솔루션은 워드 프레스 메모리 크기 제한 문제에서만 작동 할 수 있습니다. 내 솔루션, 열려있는 default-constants.php 파일 / public_html / wp-includes 폴더. 그 파일을 코드 편집기에서 열고 wp_initial_constants 범위 아래에서 메모리 설정을 찾거나 Ctrl + F를 눌러 "메모리"라는 단어를 찾습니다. 거기에서 WP_MEMORY_LIMIT와 WP_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' );
        }
    }
    

    Btw, 나쁜 코드이므로 다음 코드를 수행하지 마십시오.

    ini_set('memory_limit', '-1');
    
  9. ==============================

    9.

    우리에게는 비슷한 상황이 있었고 우리는 대답의 맨 위에 주어진 것을 시험해 보았습니다. ini_set ( 'memory_limit', '-1'); 모든 것이 잘 작동하여 1MB보다 큰 파일을 KB로 압축했습니다.

  10. ==============================

    10.

    파일을 읽으려고하면 PHP에서 메모리를 차지합니다. 예를 들어, MP3 파일 (예 : $ data = file ( "http://mydomain.com/path/sample.mp3"))을 열고 메모리에 저장하려고하면 .

    넬슨 (Nelson)이 말했듯이 실제로 많은 메모리를 사용해야하는 경우 최대 메모리 한도를 늘릴 수 있습니다.

  11. ==============================

    11.

    쓰다

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

    php 태그를 열면 index.php 맨 위

  12. ==============================

    12.

    wordpress 사용자는 줄을 추가합니다 :

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

    당신은 WordPress에 설치된 루트 폴더에서 찾을 수 wp-settings.php에서

  13. ==============================

    13.

    ini_set('memory_limit', '-1');
    
  14. ==============================

    14.

    나는 나의 호스팅을 갱신하지 않았고 데이터베이스는 읽기 전용이었다. Joomla 세션을 작성해야하고 그것을 할 수 없습니다.

  15. ==============================

    15.

    Wordpress에서 새 테마로 전환 한 후 동일한 오류 메시지가 나타납니다. PHP가 5.3 버전으로 돌아가서 7.2 버전으로 전환했습니다. 이로 인해 문제가 해결되었습니다.

  16. ==============================

    16.

    나는 많은 답변이 그 자리를 차지하는 스크립트에 주어진 메모리의 양을 증가 시키려고 시도하지만, 종종 더 많은 것은 볼륨이나 크기의 예상치 못한 양 때문에 메모리로 너무 진보적 ​​인 것을 의미한다는 것을 의미한다. 분명히 당신의 감정이 야심적이 아닌 이상 저자의 자비로 스크립트 작성자가 아니라면 :) PHP 개발자는 메모리 문제가 "저조한 스크립트"

    그것은 언급되어야한다 ini_set ( 'memory_limit', '-1'); (제한 없음) 서버 불안정성을 0 바이트 공백 = 나쁜 것으로 만들 수 있습니다. 대신 스크립트에서 수행하려는 작업과 컴퓨터에서 사용 가능한 메모리의 양에 따라 적절한 균형을 찾으십시오.

    더 나은 접근법 : 스크립트 작성자 (또는 야심적인 개발자)라면 xdebug를 사용하여 그러한 메모리 문제를 디버깅 할 수 있습니다. 최신 버전 (2.6.0 - 2018-01-29 발표)은 많은 함수 호출이 많은 메모리를 소비하고 있다는 것을 보여주는 메모리 프로파일 링을 가져 왔습니다. 그렇지 않으면 스크립트에서 발견하기 어려운 문제를 노출합니다. 일반적으로 비효율적 인 부분은 예상되는 볼륨을 기대하지 않지만 각각의 경우는 독자의 연습 문제로 남습니다.

    xdebug 문서가 도움이되지만 3 단계로 요약 할 수 있습니다.

  17. ==============================

    17.

    나는 커맨드 라인에서 PHP를 실행하는 것과 같은 문제가 있었다. 최근에 php.ini 파일을 변경하고 php.ini를 변경하는 동안 실수를했습니다.

    이것은 php7.0 용입니다.

    memory_limit = 256M (256 메가 바이트를 의미) 대신 memory_limit = 256 (256 바이트를 의미)을 설정했습니다.

    일단 내가 그것을 정정하면, 나의 프로세스는 잘 돌아 가기 시작했다.

  18. ==============================

    18.

    필자의 경우 서버를 PHP 7.x로 바꾸면 문제가 해결되었습니다.

  19. ==============================

    19.

    나는 laravel 5.6로 php7.2에서 같은 문제에 직면 해있다. php.ini 파일에서 memory_limit = 128M의 값을 늘리면됩니다. 256M / 512M / 1048M 일 수도 있습니다 ..... 이제는 정상적으로 작동합니다.

  20. from https://stackoverflow.com/questions/415801/allowed-memory-size-of-33554432-bytes-exhausted-tried-to-allocate-43148176-byte by cc-by-sa and MIT lisence