PHP 구문 오류: 어떻게 해결하나요?
문법적 오류가 무엇인가요?
PHP는 C 스타일의 명령형 프로그래밍 언어입니다. 엄격한 구문 규칙이 있으며 잘못된 위치에 있는 기호나 식별자를 발견하면 복구할 수 없습니다. 프로그래밍 의도를 추측할 수 없습니다.
주요 팁
항상 취할 수 있는 몇 가지 기본 예방 조치가 있습니다.
- 올바른 코드 들여쓰기를 사용하거나 좋은 코딩 스타일을 채택하세요. . 가독성은 예외를 방지하는 데 도움이 됩니다.
-
구문 강조 기능이 있는 PHP IDE 또는 편집기를 사용하세요. 또한 브래킷/브래킷 균형에도 도움이 됩니다.
- 매뉴얼에 있는 언어 참고 자료와 예제를 주의 깊게 읽어보세요. 어느 정도 숙달하려면 두 번 읽으세요.
파서 오류 해석 방법
일반적인 구문 오류 메시지는 다음과 같습니다.
파싱 오류: 구문 오류, file.php 줄 217 T_STRING에서 예기치 않은 구문 오류, 구문 오류가 발생할 수 있는
위치
위치를 나열하는 ';'이 필요합니다. 언급된 파일 이름 및 줄 번호를 참조하세요.
T_STRING과 같은 헤더는 파서/토크나이저가 궁극적으로 처리하지 못한 기호를 설명합니다. 그러나 이것이 반드시 구문 오류의 원인은 아닙니다.
앞에 나오는 코드 줄을 살펴보는 것도 중요합니다. 종종 문법 오류는 이전에 발생한 사소한 실수일 뿐입니다. 오류 줄 번호는 파서가 최종적으로 모든 오류 처리를 포기하는 지점입니다.
문법 오류 수정
문법 문제를 좁히고 수정하는 방법에는 여러 가지가 있습니다.
-
언급된 소스 파일을 엽니다. 언급된 코드 줄을 확인하세요.
- 폭주 문자열과 위치가 잘못된 연산자의 경우 일반적으로 범인을 찾을 수 있습니다.
- 왼쪽에서 오른쪽으로 줄을 읽고 각 기호의 역할을 상상해 보세요.
-
더 일반적으로 앞에 나오는 줄을 살펴봐야 합니다.
- 특히, 이전 줄/문의 끝에 세미콜론이 없습니다. (적어도 스타일 관점에서는)
- 코드 블록 { }이 제대로 닫히지 않거나 중첩되지 않은 경우 소스 코드를 더 자세히 살펴봐야 할 수도 있습니다. 이렇게 하려면 적절한 코드 들여쓰기를 사용하세요.
-
구문 색칠을 확인해보세요!
- 문자열, 변수, 상수는 모두 색상이 달라야 합니다.
- 연산자 -*/.도 다르게 색상을 지정해야 합니다. 그렇지 않으면 잘못된 컨텍스트에 있을 수 있습니다.
- 문자열 음영이 너무 멀거나 너무 짧게 확장되는 경우 이스케이프 처리되지 않거나 누락된 닫는 " 또는 ' 문자열 표시를 발견한 것입니다.
- 다음에 같은 색상의 구두점 두 개가 표시되는 경우 서로에게 문제가 생길 수도 있습니다. 일반적으로 그렇지 않은 경우에는 -- 또는 연산자 뒤에 괄호가 있으면 대부분의 경우 두 문자열/식별자가
-
공백에 바로 인접하는 것은 올바르지 않습니다. 코딩 스타일을 따르세요. >긴 줄을 임시로 분할합니다
-
연산자 또는 상수와 문자열 사이에 자유롭게 줄바꿈
을 추가할 수 있으며 파서는 매우 긴 코드를 보는 대신 지정할 수 있습니다. 구문 분석 오류에 대한 줄 번호입니다. 누락되거나 잘못 배치된 구문 기호를 제거하세요.
- 복잡한 if 문을 다른 조건이나 중첩된 조건으로 분할하세요. 긴 수학 공식이나 논리 체인의 경우 코드를 단순화하세요(가독성 향상). = 버그 감소)
- 다음 사이에 줄 바꿈 추가:
-
- 올바른 코드인지 쉽게 식별할 수 있습니다. 잘 모르겠는 부분인
- 과 파서가 불평하는 줄은
-
으로 나뉜다. 긴 코드 블록
은 구문 오류의 원인을 찾는 데 큰 도움이 됩니다.
문제가 있는 코드를
주석으로 처리하세요. 문제가 있는 경우 코드에 주석 처리(즉, 임시 삭제)를 시작하세요. -
파싱 오류를 해결하자마자 문제의 원인을 찾을 수 있습니다. 때때로 전체 함수/메서드 블록을 일시적으로 제거하고 싶을 수도 있습니다. 및 코드 들여쓰기 오류)
구문 문제를 해결할 수 없는 경우 - 주석 처리된 섹션을 처음부터 다시 작성
-
-
- 하여 초보자로서 혼란스러운 구문 구조를 피하세요.
3항? : 조건 연산자로 생성을 줄일 수 있습니다. 그러나 모든 경우에 가독성에 도움이 되는 것은 아닙니다. 능숙하지 않은 경우에는 템플릿에 자주 사용되는 일반적인 if 문(if:/elseif:/endif;)을 고수하십시오. ~처럼 { 코드 } 블록은 따라하기 쉽습니다. >
" 또는 ' 문자열 따옴표가 일치하지 않으며 이스케이프 처리되지 않은 따옴표
- 가 있습니다. 특히 문자열 연결의 연산자를 잊어버리세요. 보고된 행에서 개수를 계산합니다. 수량은 동일합니까?
-
- 한 가지 문법 문제를 해결하면 다음 문제를 풀 수 있다는 사실을 잊지 마세요.
- 한 가지 문제를 해결했지만 아래 코드에 다른 문제가 나타나면 대부분 올바른 방향으로 가고 있는 것입니다.
- 편집 후 같은 줄에 새로운 구문 오류가 나타나면 변경 시도도 실패할 수 있습니다. (항상 그런 것은 아님)
-
고칠 수 없는 경우 이전에 작동했던 코드의 백업을 복원하세요.
- 소스코드 버전 관리 시스템을 채택합니다. 손상 버전과 마지막 작업 버전 간의 차이점을 항상 확인할 수 있습니다. 이것은 구문 문제가 무엇인지 설명할 수 있습니다.
-
보이지 않는 길 잃은 유니코드 문자 : 어떤 경우에는 소스 코드/뷰어에 대해 16진수 편집기나 다른 편집기를 사용해야 합니다. 일부 문제는 코드를 살펴봐도 발견할 수 없습니다.
- ASCII가 아닌 기호를 찾으려면 첫 번째 단계로 grep --color -P -n "[x80-xFF]" file.php를 사용해 보세요.
- 특히 BOM, 너비가 0인 공백, 잘림 방지 공백 및 스마트 따옴표가 소스 코드에 들어가는 경우가 많습니다. -
-
파일에 저장된 줄 바꿈 유형을 참고하세요.
- PHP는 n 줄 바꿈 문자만 지원하고 r 캐리지 리턴 문자는 지원하지 않습니다.
- 이는 때때로 MacOS 사용자에게만 발생하는 문제입니다(편집기를 잘못 구성하는 데 사용되는 OS X에서도 마찬가지입니다).
- 한 줄 // 또는 # 주석을 사용할 때 일반적으로 줄 바꿈을 무시할 때만 문제가 발생합니다. 여러 줄 /.../ 주석은 개행 문자가 무시될 때 구문 분석기를 거의 방해하지 않습니다.
-
문법 오류가 네트워크를 통해 전송되지 않는 경우: 컴퓨터에 구문 오류가 있습니다. 하지만 똑같은 파일을 온라인에 게시하는 일은 다시는 발생하지 않습니다. 이는 다음 두 가지 중 하나만 의미할 수 있습니다.
- 잘못된 파일을 보고 계십니다!
- 또는 코드에 보이지 않는 길 잃은 유니코드가 포함되어 있습니다(위 참조). 쉽게 찾을 수 있습니다. 웹 양식의 코드를 텍스트 편집기로 다시 복사하기만 하면 됩니다.
-
PHP 버전을 확인하세요. 모든 서버에서 모든 구문 구성을 사용할 수 있는 것은 아닙니다.
- 웹 서버를 통해 호출되는 명령줄 해석기의 php -v
이 둘이 반드시 동일하지는 않습니다. . 특히 프레임을 사용할 때는 서로 일치하도록 해야 합니다.
- PHP 예약 키워드를 함수/메서드, 클래스 또는 상수의 식별자로 사용하지 마세요.
- 실험은 최후의 수단입니다.
다른 모든 방법이 실패하면 언제든지 웹에서 오류 메시지를 검색할 수 있습니다. 구문 기호는 쉽게 검색할 수 없습니다(Stack Overflow 자체는 SymbolHound에 의해 색인화됩니다). 따라서 관련 정보를 찾는 데 여러 페이지가 필요할 수 있습니다.
더 읽어보기
- David Sklar의 "PHP 디버깅 기본 사항"
- Jason McCreary의 "PHP 오류 수정"
- Mario Lurig의 "PHP 오류 —— 10가지 일반적인 실수 》
- 《공통 PHP 오류 및 솔루션》
- WordPress 웹사이트 문제 해결 및 수정 방법
- PHP 오류 메시지에 대한 디자이너 가이드 - Smashing Magazine
White Dead Screen
웹사이트가 비어 있는 경우 일반적인 오류는 구문 오류입니다. 다음을 사용하여 디스플레이를 활성화합니다:
- error_reporting = E_ALL
- display_errors = 1
일반적으로 php.ini에서 또는 mod_php Via의 경우. htaccess 및 .user.ini를 통한 FastCGI 설정의 경우에도 마찬가지입니다.
PHP는 첫 번째 줄을 해석/실행조차 할 수 없기 때문에 깨진 스크립트에서 활성화하기에는 너무 늦었습니다. 빠른 수정은 test.php:
와 같은 래퍼 스크립트를 만든 다음 이 래퍼 스크립트에 액세스하여 잘못된 코드를 호출하는 것입니다.
스크립트가 충돌하고 HTTP 500 응답을 받을 때 PHP의 error_log를 활성화하고 웹 서버의 error.log를 살펴보는 것도 도움이 됩니다.
위 내용은 PHP 구문 오류: 문제를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!