2016-09-27 35 views
-2

현재 구형 PHP로 개발 된 소프트웨어의 사용되지 않는 기능을 확인하고 있습니다. 2006 년에 개발되었습니다.이 형식으로 많은 변수를 보았습니다. $_SESSION[name] 또는 $_GET[name].따옴표없는 변수, 다른 응답 live 및 local

여기서 문제는 배포 된 사이트에 오류가 발생하지 않는다는 것입니다. 하지만 내 지역에서는 Notice: Use of undefined constant name - assumed 'name'을 제공합니다.

각 변수에 작은 따옴표 나 큰 따옴표를 추가하여 해결할 수 있음을 알고 있지만 편집해야 할 것이 많습니다. 그리고 서버 구성에 액세스 할 권한이 없습니다.

내 로컬에서이 기능이 작동하지 않는 이유가 있습니다. 나는 PHP 5.6을 사용한다.

편집 : 나는 단지 그 이유를 알고 싶다.

감사합니다.

답변

0

이런 종류의 이상한 시나리오에서는 E-Notice의 힌트가 있습니다 : Notice: Use of undefined constant name - assumed 'name'. 서버에 액세스 할 수 없기 때문에 (그리고 그렇게 할 때까지) 임시 파일을 작성하여 스크립트에 포함 시키십시오 : _DEFINES.php. 그 파일의 내부에서, 당신은과 같이 문자열로 그 변수를 정의 할 수 있습니다 :

<?php 
    defined('name')   or define('name',   'name'); 
    defined('another_string') or define('another_string', 'another_value'); 
    defined('yet_another') or define('yet_another', 'yet_another'); 

그런 식으로, 당신은 일시적으로이 악몽을 이길 수 있습니다 ...

참고 :이것은 많은 아닙니다 해결 방법은 ... 그것은 시간서버 측에서 문제를 해결할 수까지 ....

+0

덕분에 내가 할 수있는 주위에 작업 D 그냥 그게 내가 알아야 할 이유는 그것이 작동하는 이유입니다. 나는 라이브 소프트웨어의 복사본을 사용하고 있습니다. 그러나 그것은 다르게 표현됩니다. – makoto

+1

@makoto 그것이 작동하는 이유는 이미'E-Notice'에 나와 있습니다. 그것은'name'이'String'이 될 것으로 기대하지만'Constant' 인 것처럼 보이는 것을 발견했기 때문입니다. 그런 다음 상수를 찾을 수 없기 때문에 PHP 엔진은 '거짓 상수'로 '거짓 상수'를 가정/변환하여 자동으로 시도한 다음 경고를 표시하거나 '통지'를 시도합니다. * * 선언되지 않은 상수가 단순한 String으로 변환 된 것입니다. ** 그게 전부입니다 ... – Poiz