php 상위버전에서 에러 날 때 php.ini 수정만으로 잡을 수 있을까요?

php 상위버전에서 에러 날 때 php.ini 수정만으로 잡을 수 있을까요?

QA

php 상위버전에서 에러 날 때 php.ini 수정만으로 잡을 수 있을까요?

본문

안녕하세요.
그동안 컴퓨터에서 AutoSet 써서 작업물 관리하다가 얼마 전 라라곤을 깔았는데,
php버전 때문에 그동안 작업한 작업물들 에러코드를 쏟아내네요.

 

원인은 알아서 하나하나 수정하고 있긴 한데,
홈페이지 하나당 수정할 곳이 여기저기 너무 많고,
이런 홈페이지가 수십개입니다. 

 

앞으로는 php 상위버전에 맞춰서 작업하겠지만,
그동안 작업했던건 웹호스팅에서는 에러나지 않는지라 보관한 소스도  수정 안 하고 그대로 두고 싶은데, 가끔 확인 시 저렇게 에러를 뿜어내버리니...

 

일단 
<? 를 써서 에러 나는건 <?php 로 수정 안하고,
php.ini에서
short_open_tag = Off 를
short_open_tag = On 로 수정하니 해결되었습니다.

 

그런데, 아직도 따옴표 안한것 때문에 몇몇 곳에서 에러가 나고 있습니다.
(this will throw an Error in a future version of PHP)

 

예를들면 
$list[$i][wr_1] 
$list[$i]['wr_1'] 
이런거...

 

검색해보니

error_reporting = E_ALL

error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
로 변경하면 된다는 글이 보이기에 수정해봤지만 여전히 에러가 나네요.

 

혹시 이건 소스 수정 안 하고, php.ini에서 수정만으로 에러 안 뜨게 할 수 없을까요?

 

이 질문에 댓글 쓰기 :

답변 7

php 7.2.15 파일은 https://windows.php.net/downloads/releases/archives/

 

마리아 DB는 https://downloads.mariadb.org/mariadb/10.1.38/

 

아파치는 https://www.apachelounge.com/download/VC15/

 

로 테스트해보세요

php.ini 설정 후 아파치는 재실행 하셨나요?

오류 메시지를 제대로 확인하지 않았군요.

 

PHP v7.2 미만

Notice:  Use of undefined constant 문자열 - assumed '문자열' in PHP파일 on line 라인번호

& ~E_NOTICE 로 해결

 

PHP v7.2 이상

Warning:  Use of undefined constant 문자열 - assumed '문자열' (this will throw an Error in a future version of PHP) in PHP파일 on line 라인번호
& ~E_WARNING 으로 해결

 

error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED & ~E_WARNING

 

또는 공통으로 호출되는 PHP 파일 상단에 error_reporting('설정값');

친절하신 답변 감사합니다.
7.2 이상에서는 수정 내용이 달랐네요.
그런데 알려주신대로 적용을 해도 그부분은 계속 에러가 나네요.

Warning: Use of undefined constant wr_10 - assumed 'wr_10' (this will throw an Error in a future version of PHP)

당연히 재시작 했는데도요.

그냥 소스 수정해서 사용하는걸로 마음먹었습니다

- 확실하게 해당 오류 메시지를 숨기는 방법입니다.
  기존 댓글에도 있지만 설정 변경 후 웹 서버 재시작 필요.

- phpinfo(); // Loaded Configuration File 위치의 파일을 수정했는지...

- php.ini 뿐 아니라 다른 곳에서 설정을 변경할 수 있는 항목들이 있습니다.
  error_reporting 설정이 그 중 하나입니다.
  - https://www.php.net/manual/en/ini.list.php
  - https://www.php.net/manual/en/configuration.changes.modes.php

- 오류가 뜨는 파일의 해당 라인 위에 var_dump(error_reporting()); 코드 한 줄 추가해서 어떤 값이 뜨는지 확인해보세요.
  E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED & ~E_WARNING 기준으로 int(22517)이 뜨면 정상입니다.
  다른 값이 뜨면, 어딘가 이 설정값을 변경하는 부분이 있단 얘기입니다.
  그누보드를 예로 들면 /common.php 파일 5번 라인에 아래처럼 설정되어 있거든요.
  error_reporting( E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_ERROR | E_WARNING | E_PARSE | E_USER_ERROR | E_USER_WARNING );

- 설정 파일 건드리지 않고, 공통으로 호출되는 소스 파일 상단에 error_reporting(E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED & ~E_WARNING); 한 줄 추가하는 것이 편합니다.

와... 자세하고 친절하신 답변 정말 감사합니다.
var_dump(error_reporting()); 추가해봤더니 int(887) 뜨네요.

소스 상단에 error_reporting(E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED & ~E_WARNING);
넣어도 에러 그대로고요.

어차피 호스팅에서는 정상 작동하고 있고,
그동안 작업물 이번 기회에 다 수정하려고 합니다.

라라곤의 장점이 다양한 php버전을 설치 가능하다는 것입니다.

 

에러가 난다고 하면 php 5.6 버전과 해당되는 apache, php를 설치해 놓고 (아마도 VC14로..)

 

잠깐 잠깐 보실 때, 해당 버전을  선택해서 실행하시면 됩니다.

답변 감사합니다.
지금 라라벨은 php7.2.19이고
기존에  AutoSet과 카페24, iwinv 등에서 사용하던 php버전도 php7.2.15, PHP7.0였기에,
굳이 버전을 내리지 않아도 설정만으로 해결 되지 않을까해서 문의드려봤습니다.

아마도 이전 php버전이 7.0 일 것 같습니다.  7.2로 올라가면서 많이 바뀌었습니다.

 

다시 한번 확인하시고 7.0버전을 설치해서 테스트해보세요

친절하신 답변 감사합니다.
윗 댓글에도 적었지만,
지금 제가 사용하는 호스팅들 php버전이 php7.2.15, PHP7.0 등입니다.
7.2.15에서는 기존 소스 아무런 에러가 없기에
라라벨도 그냥 php.ini 수정만으로 해결 되지 않을까해서요.

음 "php버전이 php7.2.15, PHP7.0 등입니다." 이 말이 일단 안됩니다.

 

차라리 관리자에 가면 phpinfo가 있는 데 그것을 찍어서 올려 보세요.  

답변을 작성하시기 전에 로그인 해주세요.
전체 109
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT