PHP 구문 오류: 문제를 해결하는 방법은 무엇입니까?
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

PHP에서 Password_hash 및 Password_Verify 기능을 사용하여 보안 비밀번호 해싱을 구현해야하며 MD5 또는 SHA1을 사용해서는 안됩니다. 1) Password_hash는 보안을 향상시키기 위해 소금 값이 포함 된 해시를 생성합니다. 2) Password_verify 암호를 확인하고 해시 값을 비교하여 보안을 보장합니다. 3) MD5 및 SHA1은 취약하고 소금 값이 부족하며 현대 암호 보안에는 적합하지 않습니다.

PHP와 Python은 각각 고유 한 장점이 있으며 프로젝트 요구 사항에 따라 선택합니다. 1.PHP는 웹 개발, 특히 웹 사이트의 빠른 개발 및 유지 보수에 적합합니다. 2. Python은 간결한 구문을 가진 데이터 과학, 기계 학습 및 인공 지능에 적합하며 초보자에게 적합합니다.

PHP는 전자 상거래, 컨텐츠 관리 시스템 및 API 개발에 널리 사용됩니다. 1) 전자 상거래 : 쇼핑 카트 기능 및 지불 처리에 사용됩니다. 2) 컨텐츠 관리 시스템 : 동적 컨텐츠 생성 및 사용자 관리에 사용됩니다. 3) API 개발 : 편안한 API 개발 및 API 보안에 사용됩니다. 성능 최적화 및 모범 사례를 통해 PHP 애플리케이션의 효율성과 유지 보수 성이 향상됩니다.

PHP 유형은 코드 품질과 가독성을 향상시키기위한 프롬프트입니다. 1) 스칼라 유형 팁 : PHP7.0이므로 int, float 등과 같은 기능 매개 변수에 기본 데이터 유형을 지정할 수 있습니다. 2) 반환 유형 프롬프트 : 기능 반환 값 유형의 일관성을 확인하십시오. 3) Union 유형 프롬프트 : PHP8.0이므로 기능 매개 변수 또는 반환 값에 여러 유형을 지정할 수 있습니다. 4) Nullable 유형 프롬프트 : NULL 값을 포함하고 널 값을 반환 할 수있는 기능을 포함 할 수 있습니다.

PHP는 여전히 역동적이며 현대 프로그래밍 분야에서 여전히 중요한 위치를 차지하고 있습니다. 1) PHP의 단순성과 강력한 커뮤니티 지원으로 인해 웹 개발에 널리 사용됩니다. 2) 유연성과 안정성은 웹 양식, 데이터베이스 작업 및 파일 처리를 처리하는 데 탁월합니다. 3) PHP는 지속적으로 발전하고 최적화하며 초보자 및 숙련 된 개발자에게 적합합니다.

PHP는 주로 절차 적 프로그래밍이지만 객체 지향 프로그래밍 (OOP)도 지원합니다. Python은 OOP, 기능 및 절차 프로그래밍을 포함한 다양한 패러다임을 지원합니다. PHP는 웹 개발에 적합하며 Python은 데이터 분석 및 기계 학습과 같은 다양한 응용 프로그램에 적합합니다.

PHP와 Python은 고유 한 장점과 단점이 있으며 선택은 프로젝트 요구와 개인 선호도에 달려 있습니다. 1.PHP는 대규모 웹 애플리케이션의 빠른 개발 및 유지 보수에 적합합니다. 2. Python은 데이터 과학 및 기계 학습 분야를 지배합니다.

PHP에서 전처리 문과 PDO를 사용하면 SQL 주입 공격을 효과적으로 방지 할 수 있습니다. 1) PDO를 사용하여 데이터베이스에 연결하고 오류 모드를 설정하십시오. 2) 준비 방법을 통해 전처리 명세서를 작성하고 자리 표시자를 사용하여 데이터를 전달하고 방법을 실행하십시오. 3) 쿼리 결과를 처리하고 코드의 보안 및 성능을 보장합니다.
