>  Q&A  >  본문

PHP 구문 분석/구문 오류 및 해결 방법

<p>누구나 문법 오류가 발생합니다. 숙련된 프로그래머라도 실수를 합니다. 신규 이민자에게 이는 학습 과정의 일부일 뿐입니다. 그러나 오류 메시지는 일반적으로 해석하기 쉽습니다. 예: </p> <인용문> <p>PHP 구문 분석 오류: 구문 오류, index.php 라인 20의 예상치 못한 '{'</p> </인용문> <p>예상치 못한 기호가 항상 실제 원인은 아닙니다. 그러나 줄 번호는 어디에서 시작해야 할지 대략적인 아이디어를 제공합니다. </p> <인용문> <p>항상 <strong>코드 컨텍스트</strong>를 살펴보세요. 구문 오류는 <strong>코드의 앞선 줄</strong>에 언급된 <em>에 숨겨져 있는 경우가 많습니다. 코드를 매뉴얼의 구문 예제와 비교하세요. </p> </인용문> <p>모든 경우가 서로 일치하는 것은 아닙니다. 그러나 <strong>구문 오류 해결</strong>을 위한 몇 가지 일반적인 단계가 있습니다.이 참조 자료에는 일반적인 함정이 요약되어 있습니다. </p>
P粉633075725P粉633075725446일 전621

모든 응답(2)나는 대답할 것이다

  • P粉639667504

    P粉6396675042023-08-24 12:44:02

    제 생각엔 이 주제가 완전히 논의가 너무 지나쳤거나 너무 복잡하다고 생각합니다. IDE를 사용하면 구문 오류를 완전히 피할 수 있습니다. IDE 없이 작업하는 것은 비전문적이라고 말하고 싶습니다. 왜? 최신 IDE는 사용자가 입력하는 모든 문자 후에 구문을 확인하기 때문입니다. 코딩 중 전체 줄이 빨간색으로 바뀌고 큰 경고 알림에 구문 오류의 정확한 유형과 정확한 위치가 표시되면 다른 솔루션을 검색할 필요가 전혀 없습니다.

    구문 검사 IDE를 사용한다는 것은 다음을 의미합니다:

    입력할 때 문법 오류가 올바르게 표시되므로 문법 오류가 (효과적으로) 다시는 발생하지 않습니다. 솔직히.

    구문 검사 기능이 있는 훌륭한 IDE(모두 Linux, Windows 및 Mac에서 사용 가능):

    1. NetBeans [무료]
    2. PHPStorm [$199]
    3. EclipsePHP 플러그인 [무료]
    4. Sublime [$80] (주로 텍스트 편집기이지만 PHP Grammar Parser와 같은 플러그인으로 확장 가능)

    회신하다
    0
  • P粉068510991

    P粉0685109912023-08-24 09:05:03

    문법 오류란 무엇인가요?

    PHP는 C 스타일명령형 프로그래밍 언어에 속합니다. 잘못 배치된 기호나 식별자가 발견되면 복구할 수 없는 엄격한 구문 규칙이 있습니다. 코딩 의도를 추측할 수 없습니다.

    가장 중요한 팁

    항상 취할 수 있는 몇 가지 기본적인 예방 조치는 다음과 같습니다.

    • 적절한 코드 들여쓰기를 사용하거나 고급 코딩 스타일을 채택하세요. 가독성은 불규칙성을 방지합니다.

    • 구문 강조와 함께 IDE또는 PHP용 편집기를 사용하세요. 이는 브래킷/브래킷 균형에도 도움이 됩니다.

    • 설명서의 언어 참조와 예제를 읽어보세요. 두 번 지나면 능숙해집니다.

    파서 오류 해석 방법

    일반적인 구문 오류 메시지는 다음과 같습니다.

    여기에는 가능한 문법적 오류가 나열되어 있습니다. 언급된 filenamelinenumber을 참조하세요.

    A T_STRING이름 은 파서/태거로 구문 분석할 수 없는 기호의 최종 처리를 설명합니다. 그러나 이것이 반드시 구문 오류의 원인은 아닙니다.

    이전 코드 줄을 살펴보는 것도 중요합니다. 종종 구문 오류는 이전에 발생한 사고일 뿐입니다. 오류 줄 번호는 파서가 최종적으로 모든 처리를 포기하는 지점입니다.

    문법 오류 수정

    문법 문제를 좁히고 수정하는 방법에는 여러 가지가 있습니다.

    • 언급된 소스 파일을 엽니다. 언급된 코드 줄을 확인하세요.

      • 폭주 문자열과 잘못된 연산자가 있는 경우 일반적으로 여기에서 범인을 찾을 수 있습니다.

      • 왼쪽에서 오른쪽으로 줄을 읽고 각 기호의 역할을 상상해 보세요.

    • 또한 이전 줄을 더 자주 확인해야 합니다.

      • 구체적으로 이전 줄의 끝/문에 ; 세미콜론이 누락되었습니다. (적어도 스타일 관점에서는요.)

      • {代码块}이 닫혀 있지 않거나 올바르게 중첩되지 않은 경우 소스 코드를 추가로 조사해야 할 수도 있습니다. 단순화하려면 적절한 코드 들여쓰기를 사용하세요.

    • 문법 색칠하기를 확인해 보세요!

      • 문자열, 변수, 상수는 모두 색상이 달라야 합니다.

      • 연산자+-*/.도 다르게 색칠되어야 합니다. 그렇지 않으면 잘못된 환경에 있을 수 있습니다.

      • 문자열 색상이 너무 멀거나 너무 짧다면, 이스케이프되지 않거나 누락된 엔딩 "' 문자열 마커를 발견한 것입니다.

      • 같은 색상의 두 개의 인접한 구두점도 문제를 의미할 수 있습니다. 일반적으로 연산자 뒤에 ++-- 또는 괄호가 없으면 단독 연산자입니다. 대부분의 경우 직접 연결된 두 개의 문자열/식별자는 올바르지 않습니다.

    • 빈 공간은 친구입니다. 어떤코딩 스타일도 따르세요.

    • 긴 대기열을 일시적으로 중단하세요.

      • 연산자 또는 상수와 문자열 사이에 자유롭게 줄바꿈을 추가할 수 있습니다. 그런 다음 파서는 오류를 구문 분석한 줄 번호를 외부화합니다. 매우 장황한 코드를 보는 대신 누락되거나 잘못 배치된 구문 기호를 분리할 수 있습니다.

      • 복잡한 if 语句拆分为不同的或嵌套的 if 조건을 변환합니다.

      • 긴 수학 공식이나 논리 체인을 사용하는 대신 임시 변수를 사용하여 코드를 단순화하세요. (가독성이 높을수록 오류가 줄어듭니다.)

      • 다음 사이에 줄 바꿈 추가:

        1. 올바른 코드를 쉽게 식별할 수 있습니다.
        2. 잘 모르시는 부분,
        3. 그리고 파서가 불평하는 줄.

        긴 코드 블록을 분할하면 실제로 구문 오류의 원인을 찾는 데 도움이 됩니다.

    • 문제가 되는 코드를 주석 처리하세요.

      • 문제의 원인을 격리할 수 없는 경우 코드 블록에 주석 처리(임시 삭제)를 시작하세요.

      • 파싱 오류를 해결하면 문제의 원인을 찾은 것입니다. 거기를 자세히 살펴보세요.

      • 전체 함수/메서드 블록을 일시적으로 제거하고 싶을 때가 있습니다. (중괄호가 일치하지 않거나 들여쓰기가 잘못된 코드의 경우)

      • 문법 문제가 해결되지 않으면 주석 처리된 부분을 처음부터 다시 작성다시 작성해 보세요.

    • 초보자로서 혼란스러운 문법 구조를 피하십시오.

      • Ternary? : 条件运算符可以压缩代码并且确实很有用。但它并不能在所有情况下提高可读性。在不熟悉的情况下更喜欢简单的 if 문.

      • PHP의 대체 구문(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의 예약어를 함수/메서드, 클래스 식별자 또는 상수로 사용하지 마세요.

    • 시행착오는 최후의 수단입니다.

    모든 방법이 실패하면 언제든지 오류 메시지를 google에서 확인할 수 있습니다. 구문 기호는 검색하기가 쉽지 않습니다(스택 오버플로 자체는 SymbolHound를 통해 색인화되지만). 따라서 관련 콘텐츠를 찾으려면 몇 페이지를 더 검색해야 할 수도 있습니다.

    추가 가이드:

    죽음의 하얀 화면

    웹사이트가 비어 있는 경우 일반적으로 문법 오류로 인한 것입니다. 디스플레이 활성화:

    • error_reporting = E_ALL
    • display_errors = 1

    php.iniphp.ini一般来说,或者通过 mod_php 的 .htaccess에서 일반적으로 말하면 또는 mod_php의 .htaccess , .user.ini FastCGI 설정을 사용해도 마찬가지입니다.

    PHP는 첫 번째 줄도 해석/실행할 수 없기 때문에 깨진 스크립트에서 활성화하기에는 너무 늦었습니다. 빠른 수정은 test.php:

    와 같은 래퍼 스크립트를 만드는 것입니다. 으아아아

    이 래퍼 스크립트에 액세스하면 실패한 코드가 호출됩니다.

    스크립트가 HTTP 500 응답과 충돌할 때 PHP의 error_log 并查看您的网络服务器的error.log을 활성화하는 데도 도움이 됩니다.

    회신하다
    0
  • 취소회신하다