개발하는 고양이 오이

10. [PHP] PHPExcel 사용 오류 - 파일 깨짐 / Array and string offset access syntax / "continue" targeting switch is equivalent to "break" / Trying to access array offset on value of type bool / Fatal error: 'break' not in the 'loop' or 'switch' 본문

PHP

10. [PHP] PHPExcel 사용 오류 - 파일 깨짐 / Array and string offset access syntax / "continue" targeting switch is equivalent to "break" / Trying to access array offset on value of type bool / Fatal error: 'break' not in the 'loop' or 'switch'

Cucum 2022. 7. 6. 10:52

안녕하세요. 오늘은 PHPExcel 라이브러리를 이용하여 엑셀을 다운로드 받는 코드를 작성하다가 생긴 오류를 해결해서 공유하고자 합니다.

저에게는 총 4개의 오류가 있었습니다.

 

우선 제 로컬 컴퓨터의 PHP Version은 5.6.29입니다.

 

코드를 작성 한 후 서버에 업로드 한 후 엑셀을 다운로드를 하니 아래와 같이 파일이 깨졌는데요.

 

이유를 찾아보니 아무래도 서버 컴퓨터의 PHP Version이 7.4.27여서 버전 차이였던 것 같습니다.

버전을 변경하면 가장 빠르게 해결되겠지만, 서버 컴퓨터쪽은 함부로 건들고싶지않아서 다른 방법으로 해결하고자 했습니다.

 

①  Deprecated: Array and string offset access syntax with curly braces is deprecated in 

 

해결방법 : 오류가 생기는 위치의 파일에 직접 가서 중괄호대괄호로 모두 변경해주면 해결됩니다.

{0} -> [0]

 

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"

해결방법 : 오류가 생기는 위치의 파일에 직접 가서 continuebreak로 변경해주면 해결됩니다.

                  (저는 이 방법으로 해결됐으나, 만약 이 방법으로 해결되지 않는다면 continue를 continue 2로 변경합니다.)

continue -> break

 

Trying to access array offset on value of type bool in DefaultValueBinder

DefaultValueBinder.php에서 문제

해결방법 : 오류가 생기는 위치의 파일에 직접 가서 아래와 같이 변경했습니다.

} elseif ($pValue [0] === '=' && strlen ($pValue)> 1) {

->

} elseif (0 === strpos($pValue, '=') && strlen($pValue) > 1) {

=>

82번째 줄 변경

 

Fatal error: 'break' not in the 'loop' or 'switch' context in Functions.php

해결방법 : 오류가 생기는 위치의 파일에 직접 가서 breakreturn으로 변경해주면 됩니다.

break -> return

 

이렇게 총 4개의 오류가 발생했었고, 이 오류들을 모두 수정해주니 신기하게도 엑셀 파일이 깨지던 현상이 사라지고, 정상적으로 나왔습니다.

찾아보니 php 버전 7.0 이상부터 위의 오류들이 자주 발생하는 것 같은데, 저처럼 수정하면 임시로 수정해둘 수 있는 것 같습니다.

감사합니다.

 


오류 해결을 위해 참고한 링크 :

https://solbel.tistory.com/2133

 

[php] php excel Array and string offset access syntax with curly braces is deprecated 에러 해결 방법

[php] php excel Array and string offset access syntax with curly braces is deprecated 에러 해결 방법 php 7.4 에서 엑셀을 다운로드 부분을 phpExcel 라이브러리를 이용해서 작업하던중 아..

solbel.tistory.com

https://github.com/Automattic/o2/issues/165

 

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /wp-content/plugins/o2/o2.ph

PHP 7.3 I think this issue is related with php7.3. Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /wp-content/plug...

github.com

https://stackoverflow.com/questions/62554098/trying-to-access-array-offset-on-value-of-type-int-defaultvaluebinder-php-line

 

Trying to access array offset on value of type int { DefaultValueBinder.php line 82 }

I have an export to excel button which downloads excel file. However when i click it shows me error as Trying to access array offset on value of type int My code is this: public static function

stackoverflow.com

https://www.drupal.org/project/taxonomy_csv/issues/2971042