예기치 않은 T_VARIABLE
예기치 않은 '$varname'(T_VARIABLE)
</li>예기치 않은 T_CONSTANT_ENCAPSED_STRING
예기치 않은 T_ENCAPSED_AND_WHITESPACE
</li> <li><p>예상치 못한 $end</p> </li> <li><p>예상치 못한 T_FUNCTION...</p> </li>예기치 못한{
예기치 못한}
예기치 못한 예기치 못한 예기치 못한 예기치 않은 T_IF 예상치 못한 T_FOREACH 예상치 못한 T_FOR 예상치 못한 T_WHILE p>< p> 예상치 못한 T_DO (</code></p><p>예기치 않은<code>)</code></p>
</li>
[
]
예상치 못한 T_ECHO
</li> <li><p>예기치 않은 T_LNUMBER</p> </li> <li><p>사고?</p> </li> <li><p>예기치 않은 연속(T_CONTINUE)<p>예기치 못한 연속(T_break)<p>예기치 못한 연속(T_RETURN) </li> <li><p>예상치 못한 일입니다. "="</p> </li> <li><p>예상치 못한 T_INLINE_HTML…</p> </li> <li><p>예상치 못한 T_THIS_IS_THE_THING...</p> </li> <li><p>예상치 못한 T_OBJECT_OPERATOR...</p> </li> <li><p>예상치 못한 T_DOUBLE_ARROW...</p> </li> <li><p>예상치 못한 T_SL...</p> </li> 예상치 못한 T_BOOLEAN_OR... </p><p> 예상치 못한 T_BOOLEAN_AND…</p> </li>예상치 못한 T_IS_EQUAL
예상치 못한 T_IS_GREATER_OR_EQUAL
예상치 못한 T_IS_IDENTICAL </p><p> 예상치 못한 T_IS_NOT_EQUAL
예상치 못한 T_IS_NOT_IDENTICAL
예상치 못한 T_IS_SMALLER_OR_EQUAL
예상치 못한 <code><</code</p><p> 예상치 못한 <code>></code></p> </li> <li><p>예기치 않은 T_NS_SEPARATOR...</p> </li> <li><p>입력에 예상치 못한 문자가 있습니다: '<code></code>' (ASCII=92) state=1</p> </li>
예기치 않은 '공개'(T_PUBLIC)
<p>예기치 않은 '비공개'(T_PRIVATE) </p><p>예기치 않은 '보호됨'(T_PROTECTED) ) < /p><p>예상치 못한 'T_FINAL'...</p> </li> <li><p>예상치 못한 T_STATIC...</p> </li> <li><p>예상치 못한 T_CLASS…</p> </li> <li><p>예기치 않은 '사용'(T_USE)</p> </li> <li><p>예상치 못한 T_DNUMBER</p> </li>예기치 않은 ,
(쉼표)
예기치 않은*
(별표)
""
smart''
인용문은 PHP에 아무런 의미가 없습니다, PHP 버전으로 인해 호환되지 않을 수 있으므로 플랫폼 설정과 비교하여 공급업체의 요구 사항을 확인하세요. </p>
제 생각엔 이 주제가 완전히 논의가 너무 지나쳤거나 너무 복잡하다고 생각합니다. IDE를 사용하면 구문 오류를 완전히 피할 수 있습니다. IDE 없이 작업하는 것은 비전문적이라고 말하고 싶습니다. 왜? 최신 IDE는 사용자가 입력하는 모든 문자 후에 구문을 확인하기 때문입니다. 코딩 중 전체 줄이 빨간색으로 바뀌고 큰 경고 알림에 구문 오류의 정확한 유형과 정확한 위치가 표시되면 다른 솔루션을 검색할 필요가 전혀 없습니다.
구문 검사 IDE를 사용한다는 것은 다음을 의미합니다:
입력할 때 문법 오류가 올바르게 표시되므로 문법 오류가 (효과적으로) 다시는 발생하지 않습니다. 솔직히.
구문 검사 기능이 있는 훌륭한 IDE(모두 Linux, Windows 및 Mac에서 사용 가능):
문법 오류란 무엇인가요?
PHP는 C 스타일 및 명령형 프로그래밍 언어에 속합니다. 잘못 배치된 기호나 식별자가 발견되면 복구할 수 없는 엄격한 구문 규칙이 있습니다. 코딩 의도를 추측할 수 없습니다.
가장 중요한 팁
항상 취할 수 있는 몇 가지 기본적인 예방 조치는 다음과 같습니다.
적절한 코드 들여쓰기를 사용하거나 고급 코딩 스타일을 채택하세요. 가독성은 불규칙성을 방지합니다.
구문 강조와 함께 IDE또는 PHP용 편집기를 사용하세요. 이는 브래킷/브래킷 균형에도 도움이 됩니다.
설명서의 언어 참조와 예제를 읽어보세요. 두 번 지나면 능숙해집니다.
파서 오류 해석 방법
일반적인 구문 오류 메시지는 다음과 같습니다.
여기에는 가능한 문법적 오류가 나열되어 있습니다. 언급된 filename 및 linenumber을 참조하세요.
A
T_STRING
이름 은 파서/태거로 구문 분석할 수 없는 기호의 최종 처리를 설명합니다. 그러나 이것이 반드시 구문 오류의 원인은 아닙니다.이전 코드 줄을 살펴보는 것도 중요합니다. 종종 구문 오류는 이전에 발생한 사고일 뿐입니다. 오류 줄 번호는 파서가 최종적으로 모든 처리를 포기하는 지점입니다.
문법 오류 수정
문법 문제를 좁히고 수정하는 방법에는 여러 가지가 있습니다.
언급된 소스 파일을 엽니다. 언급된 코드 줄을 확인하세요.
폭주 문자열과 잘못된 연산자가 있는 경우 일반적으로 여기에서 범인을 찾을 수 있습니다.
왼쪽에서 오른쪽으로 줄을 읽고 각 기호의 역할을 상상해 보세요.
또한 이전 줄을 더 자주 확인해야 합니다.
구체적으로 이전 줄의 끝/문에
;
세미콜론이 누락되었습니다. (적어도 스타일 관점에서는요.){
代码块}
이 닫혀 있지 않거나 올바르게 중첩되지 않은 경우 소스 코드를 추가로 조사해야 할 수도 있습니다. 단순화하려면 적절한 코드 들여쓰기를 사용하세요.문법 색칠하기를 확인해 보세요!
문자열, 변수, 상수는 모두 색상이 달라야 합니다.
연산자
+-*/.
도 다르게 색칠되어야 합니다. 그렇지 않으면 잘못된 환경에 있을 수 있습니다.문자열 색상이 너무 멀거나 너무 짧다면, 이스케이프되지 않거나 누락된 엔딩
"
或'
문자열 마커를 발견한 것입니다.같은 색상의 두 개의 인접한 구두점도 문제를 의미할 수 있습니다. 일반적으로 연산자 뒤에
++
、--
또는 괄호가 없으면 단독 연산자입니다. 대부분의 경우 직접 연결된 두 개의 문자열/식별자는 올바르지 않습니다.빈 공간은 친구입니다. 어떤코딩 스타일도 따르세요.
긴 대기열을 일시적으로 중단하세요.
연산자 또는 상수와 문자열 사이에 자유롭게 줄바꿈을 추가할 수 있습니다. 그런 다음 파서는 오류를 구문 분석한 줄 번호를 외부화합니다. 매우 장황한 코드를 보는 대신 누락되거나 잘못 배치된 구문 기호를 분리할 수 있습니다.
복잡한
if
语句拆分为不同的或嵌套的if
조건을 변환합니다.긴 수학 공식이나 논리 체인을 사용하는 대신 임시 변수를 사용하여 코드를 단순화하세요. (가독성이 높을수록 오류가 줄어듭니다.)
다음 사이에 줄 바꿈 추가:
긴 코드 블록을 분할하면 실제로 구문 오류의 원인을 찾는 데 도움이 됩니다.
문제가 되는 코드를 주석 처리하세요.
문제의 원인을 격리할 수 없는 경우 코드 블록에 주석 처리(임시 삭제)를 시작하세요.
파싱 오류를 해결하면 문제의 원인을 찾은 것입니다. 거기를 자세히 살펴보세요.
전체 함수/메서드 블록을 일시적으로 제거하고 싶을 때가 있습니다. (중괄호가 일치하지 않거나 들여쓰기가 잘못된 코드의 경우)
문법 문제가 해결되지 않으면 주석 처리된 부분을 처음부터 다시 작성다시 작성해 보세요.
초보자로서 혼란스러운 문법 구조를 피하십시오.
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.ini
php.ini
一般来说,或者通过 mod_php 的.htaccess
에서 일반적으로 말하면 또는 mod_php의.htaccess
,.user.ini
FastCGI 설정을 사용해도 마찬가지입니다.PHP는 첫 번째 줄도 해석/실행할 수 없기 때문에 깨진 스크립트에서 활성화하기에는 너무 늦었습니다. 빠른 수정은
와 같은 래퍼 스크립트를 만드는 것입니다. 으아아아test.php
:이 래퍼 스크립트에 액세스하면 실패한 코드가 호출됩니다.
스크립트가 HTTP 500 응답과 충돌할 때 PHP의
error_log
并查看您的网络服务器的error.log
을 활성화하는 데도 도움이 됩니다.