PHP에서 허용 된 메모리 크기 33554432 바이트 (43148176 바이트 할당 시도)
이 오류 메시지가 표시됩니다. 제안 사항이 있습니까?
PHP에서 허용 된 메모리 크기 33554432 바이트 (43148176 바이트 할당 시도)
마침내 나는 대답을 찾았습니다.
파일에서 오류가 발생하기 전에이 줄을 아래 줄에 추가하십시오.
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보다 자동으로 수행되지만 문자열, 배열 및 객체를 복사하는 것이 좋습니다. 그러나 PHP 4보다 자동으로 데이터 세트를 처리하는 것이 가장 작은 논리적 단위를 처리하는 것보다 낭비입니다. 한 번에. 전형적인 예는 데이터베이스에서 큰 결과 집합을 사용하는 것입니다. 대부분의 프로그래머는 전체 결과 집합을 배열로 가져온 다음로 여러 번 반복합니다 foreach()
. while()
루프를 사용하여 한 번에 한 행씩 페치 및 처리 하는 것이 훨씬 더 메모리 효율적 입니다. 파일 처리에도 동일하게 적용됩니다.
큰 파일을 읽으려면 한 번에 읽는 대신 비트 단위로 읽어야합니다.
간단한 수학 : 1MB 큰 파일을 한 번에 읽는 경우 데이터를 보유하려면 동시에 1MB 이상의 메모리가 필요합니다.
따라서 fopen
&를 사용하여 조금씩 읽어야합니다 fread
.
php7.2에서 laravel 5.6과 동일한 문제에 직면했습니다. memory_limit = 128M
내 응용 프로그램 요구에 따라 php.ini 의 변수 양을 늘 립니다. 256M / 512M / 1048M 일 수 있습니다 .... 이제는 잘 작동합니다.
스크립트의 모든 코드 위에 다음 줄을 실행하여 PHP 스크립트에 허용되는 메모리를 늘릴 수 있습니다.
ini_set('memory_limit','-1'); // enabled the full memory available.
또한 스크립트에서 원하지 않는 변수를 할당 해제하십시오.
이 PHP 라이브러리를 확인하십시오 : PHP로 메모리 확보
나는 또한 같은 문제가 있었고 phpinfo.ini, php.ini 또는 .htaccess 파일을 찾아 보았습니다. 마지막으로 일부 PHP 파일을 살펴보고 열어서 메모리의 코드를 확인했습니다. 마지막 으로이 솔루션은 내가 얻은 것이며 나에게 효과적이었습니다. 워드 프레스를 사용하고 있었 으므로이 솔루션은 워드 프레스 메모리 크기 제한 문제에서만 작동 할 수 있습니다. 내 해결책 은 / public_html / wp-includes 폴더 에서 default-constants.php 파일을 엽니 다 . 코드 편집기로 해당 파일을 열고 범위 내에서 메모리 설정을 찾 거나 Ctrl + F를 눌러 "memory"라는 단어를 찾으십시오. 당신은 거기에 올 것이다 와 . 내 경우에는 64MB, 128MB, 200MB로 늘 렸습니다.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' );
}
}
Btw, 나쁜 습관이므로 다음 코드를 수행하지 마십시오.
ini_set('memory_limit', '-1');
ini_set('memory_limit', '-1');
많은 답변이 스크립트를 제공하는 스크립트의 메모리 양을 늘리려 고하지만 예기치 않은 양의 볼륨이나 크기로 인해 메모리에 너무 자유 롭다는 것을 의미합니다. PHP 문서는 메모리 문제가 " 잘못 작성된 스크립트 " 때문이라고 말합니다.
언급되어야한다 ini_set('memory_limit', '-1');
(제한 없음)이 같은 서버 불안정해질 수 있습니다 0 bytes free = bad things
. 대신 스크립트가 수행하려는 작업과 컴퓨터에서 사용 가능한 메모리 양에 따라 적절한 균형을 찾으십시오.
더 나은 접근법 : 스크립트 작성자 (또는 야심 찬)라면 xdebug를 사용 하여 이러한 메모리 문제를 디버깅 할 수 있습니다 . 최신 버전 (2.6.0-2018-01-29 출시)은 메모리 호출을 통해 많은 양의 메모리를 소비하는 함수 호출을 보여줍니다. 그렇지 않으면 찾기 어려운 스크립트 문제가 노출됩니다. 일반적으로 비효율은 루프에서 수신되는 볼륨을 기대하지 않지만 각 경우는 독자에게 연습으로 남습니다. :)
Xdebug는 문서는 유용하지만, 3 단계로 요약된다 :
- 그것은 설치 - 사용 가능한을 통해
apt-get
및yum
등 - 구성 -xdebug.ini :
xdebug.profiler_enable = 1
,xdebug.profiler_output_dir = /where/ever/
- QCacheGrind , KCacheGrind 와 같은 도구에서 프로파일보기
파일을 읽으려고하면 PHP에서 메모리를 차지합니다. 예를 들어, MP3 파일을 열고 읽으려고하면 (예 : $ data = file ( " http://mydomain.com/path/sample.mp3 ") 파일 을 모두 메모리로 가져옵니다. .
Nelson이 제안한 것처럼 실제로이 메모리를 많이 사용해야하는 경우 최대 메모리 제한을 늘릴 수 있습니다.
우리는 비슷한 상황을 겪었고 우리는 답의 맨 위에서 ini_set ( 'memory_limit', '-1'); 1MB보다 큰 KB로 압축 된 이미지 파일이 모두 제대로 작동했습니다.
Wordpress에서 새 테마로 전환 한 후에도 같은 오류 메시지가 나타납니다. PHP는 버전 5.3을 실행 중이므로 7.2로 전환했습니다. 문제가 해결되었습니다.
쓰다
ini_set('memory_limit', '-1');
PHP 태그를 연 후 상단의 index.php에
워드 프레스 사용자는 라인을 추가합니다 :
@ini_set('memory_limit', '-1');
wp-settings.php의 wordpress installed root 폴더에서 찾을 수 있습니다
호스팅을 갱신하지 않았으며 데이터베이스는 읽기 전용이었습니다. Joomla는 세션을 작성해야했지만 할 수 없었습니다.
커맨드 라인에서 PHP를 실행하는 것과 같은 문제가있었습니다. 최근에 php.ini 파일을 변경했으며 php.ini를 변경하는 동안 실수를했습니다.
이것은 PHP7.0입니다
내가 실수 한 php.ini의 경로 :
/etc/php/7.0/cli/php.ini
나는 memory_limit = 256
(의미 256 bytes
)
대신 memory_limit = 256M
(의미 256 Mega bytes
)을 설정했습니다.
; 스크립트가 소비 할 수있는 최대 메모리 양 (128MB)
; http://php.net/memory-limit
memory_limit = 128M
수정하면 프로세스가 정상적으로 실행되기 시작했습니다.
Magento 루트 디렉토리에서이 명령을 실행하십시오. php -d memory_limit=4G bin/magento
공유 호스팅을 사용하는 경우, PHP 크기 제한을 늘릴 수 없습니다.
cpanel로 이동하여 PHP 버전을 7.1 이상으로 업그레이드하면 좋습니다.
서버를 PHP 7.x로 전환하면 내 문제가 해결되었습니다.
라 라벨을 사용하는 경우 다음 방법을 사용하십시오
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 }
'Programing' 카테고리의 다른 글
C에서 int64_t 유형을 인쇄하는 방법 (0) | 2020.03.28 |
---|---|
RecyclerView와 ListView (0) | 2020.03.28 |
과학적 표기법을 비활성화하는 방법? (0) | 2020.03.28 |
셸 별칭에 명령 줄 인수를 전달하는 방법은 무엇입니까? (0) | 2020.03.28 |
SHOW PROCESSLIST에서 전체 쿼리를 보는 방법 (0) | 2020.03.28 |