PHP 構文エラー: トラブルシューティングと解決方法は?
PHP 構文エラー: 修正方法?
文法上の間違いは何ですか?
PHP は、C スタイルの命令型プログラミング言語です。厳密な構文規則があり、間違った位置にシンボルや識別子があった場合には回復できません。プログラミングの意図を推測することはできません。
重要なヒント
いつでも実行できる基本的な予防策がいくつかあります:
- 適切な コード インデント を使用するか、適切なコーディング スタイルを採用してください。 。読みやすさは例外の防止に役立ちます。
- 構文強調表示 を備えた PHP IDE または エディターを使用します。ブラケットとブラケットのバランスにも役立ちます。
- マニュアルの言語リファレンスと例を注意深くお読みください。 2 回読んで、ある程度のレベルを習得してください。
パーサー エラーの解釈方法
一般的な構文エラー メッセージは次のとおりです。
解析エラー: file.php 行 217 T_STRING で予期しない構文エラー、 ';'
が必要です。これには、構文エラーの可能性がある 個の 個所がリストされます。前述のファイル名と行番号を参照してください。
T_STRING のようなヘッダーは、パーサー/トークナイザーが最終的にどのシンボルの処理に失敗したかを説明します。ただし、これが必ずしも構文エラーの原因であるとは限りません。
の前にあるコード行 にも注目することが重要です。多くの場合、文法上の間違いは、以前に発生した単なる小さな間違いです。エラー行番号は、パーサーが最終的にすべてのエラーの処理を放棄する場所です。
文法エラーの修正
文法の問題を絞り込んで修正する方法はたくさんあります。
-
上記のソース ファイルを開きます。前述の コード行 を確認してください。
- 文字列の暴走や演算子の配置ミスについては、通常、そこに原因があることがわかります。
- 行を左から右に読んで、それぞれの記号が何をするかを想像してください。
-
より一般的には、 の前にある行 を確認する必要があります。
- 特に、前の行/ステートメントの末尾にセミコロンがありません。 (少なくともスタイルの観点からは)
- コード ブロック { } が適切に閉じられていないか、ネストされていない場合は、ソース コードをさらに掘り下げる必要がある場合があります。これを行うには、適切な コード インデント を使用します。
-
構文の色分け をチェックしてください!
- 文字列、変数、定数はすべて異なる色にする必要があります。
- 演算子 -*/ も別の色で表示する必要があります。そうしないと、間違ったコンテキストになる可能性があります。
- 文字列の陰影が長すぎるか短すぎる場合は、エスケープされていない、または閉じている " または ' 文字列マーカーが見つからないことを意味します。
- 次に同じ色の句読点が 2 つある場合そうでない場合、通常、お互いに問題が発生する可能性があります。または演算子の後に括弧を付けると、演算子が単独で
- スペースに隣接することはほとんどの場合間違っています。任意の コーディング スタイルに従います。 >長い行を一時的に分割する
-
演算子、定数、文字列の間に自由に改行
を追加すると、非常に長いコードを調べる代わりに、パーサーが指定できます。解析エラーの行番号。欠落または誤って配置された構文記号を削除します。- 複雑な if ステートメントを別の if 条件またはネストされた if 条件に分割します。 長い数式または論理チェーンの場合は、コードを簡素化します (可読性が向上します)。 = バグが少なくなります)
- の間に改行を追加します:
- 正しいコードであることを簡単に識別できます、不明な部分
- とパーサーが文句を言う行は
問題のあるコードをコメントアウトします。
問題のあるコードのソースを特定できない場合。問題がある場合は、コードをコメントアウト (つまり、一時的に削除) してください。 - 解析エラーを解決すると、問題の原因がすぐに見つかります。
中括弧全体の不一致を一時的に削除したい場合があります。コードのインデント エラー)
として構文の問題を解決できない場合は、初心者が混乱する構文構造を避けるために、- コメントアウトされたセクションを最初から書き直してみてください
- 。
- 三項演算子: 生成を減らすことができますか?ただし、すべての場合に読みやすさが向上するわけではありません。熟練していない場合は、テンプレートによく使用される通常の if ステートメント (if:/elseif:/endif;) を使用するようにしてください。として{ code } ブロックは簡単に理解できます。> " または '文字列の引用符が一致せず、エスケープされていない引用符
があります。特に string の演算子 -
は省略されています ( )。報告された行でそれらをカウントします。それらの量は等しいですか?
- 1 つの文法問題を解決すると、次の文法問題が明らかになる可能性があることを忘れないでください。
- 以下のコードで 1 つの問題が解決しても、他の問題が発生する場合は、ほぼ正しい方向に進んでいます。
- 編集後に同じ行に新しい構文エラーが表示された場合も、試みた変更が失敗する可能性があります。 (ただし、常にそうとは限りません)
-
修正できない場合は、以前に動作していたコードのバックアップを復元してください。
- ソースコードのバージョン管理システムを採用。破損したバージョンと最後に動作していたバージョンとの違いをいつでも確認できます。これにより、構文の問題が何であるかが説明される可能性があります。
-
目に見えない浮遊 Unicode 文字 : 場合によっては、ソース コード /ビューアに 16 進エディタまたは別のエディタを使用する必要があります。コードを見ただけでは発見できない問題もあります。
- 非 ASCII シンボルを見つける最初のステップとして grep --color -P -n "[x80-xFF]" file.php を試してください。
- 特に、BOM、ゼロ幅スペース、非改行スペース、およびスマート引用符がソース コードに侵入することがよくあります。 -
-
ファイルに保存されている 改行タイプ に注意してください。
- PHP は、n 改行文字のみをサポートし、r キャリッジ リターン文字はサポートしません。
- これは、MacOS ユーザーにのみ発生する場合があります (エディターの構成を誤るために使用される OS X 上でも)。
- 単一行の // または # コメントを使用する場合、通常は改行が無視された場合にのみ問題が発生します。改行が無視される場合、複数行の /.../ コメントがパーサーに干渉することはほとんどありません。
-
文法エラーがネットワーク経由で送信されない場合: マシンに構文エラーがあります。しかし、まったく同じファイルをオンラインに投稿することは二度と起こらないでしょう。これは、次の 2 つのうちの 1 つだけを意味します:
- 間違ったファイルを見ています。
- または、コードに目に見えない迷走 Unicode が含まれています (上記を参照)。簡単に見つけることができます。Web フォームのコードをテキスト エディターにコピーして戻すだけです。
-
PHP バージョンを確認してください。すべての構文構造がすべてのサーバーで利用できるわけではありません。
- コマンドラインインタープリタの php -v
- Web サーバー経由で呼び出される
これらは必ずしも同じではありません。特にフレームを使用する場合は、フレームを一致させる必要があります。
- PHP の予約キーワードを関数/メソッド、クラス、または定数の識別子として使用しないでください。
- 実験は最後の手段です。
他のすべてが失敗した場合は、いつでも Web でエラー メッセージを検索できます。構文シンボルは簡単に検索できません (Stack Overflow 自体は SymbolHound によってインデックス付けされています)。そのため、関連情報を見つけるには数ページかかる場合があります。
詳細資料
- David Sklar の「PHP デバッグの基礎」
- Jason McCreary の「PHP エラーの修正」
- Mario Lurig の「PHP エラー— 10 のよくある間違い」 》
- 《一般的なPHPエラーと解決策》
- WordPress ウェブサイトのトラブルシューティングと修正方法
- PHP エラー メッセージに関するデザイナーズ ガイド - スマッシング マガジン
ホワイト デッド スクリーン
Web サイトが空白の場合、通常のエラーは構文エラーです。
- error_reporting = E_ALL
- display_errors = 1
通常は php.ini で、または mod_php Via の場合は、を使用して表示を有効にします。 htaccess、および .user.ini 経由の FastCGI 設定にも対応します。
PHP は最初の行を解釈/実行することさえできないため、壊れたスクリプトで有効にするのは遅すぎます。簡単な修正方法は、test.php:
<?php error_reporting(E_ALL); ini_set("display_errors", 1); include("./broken-script.php"); ?>
のようなラッパー スクリプトを作成し、このラッパー スクリプトにアクセスして問題のあるコードを呼び出すことです。
スクリプトがクラッシュして HTTP 500 応答を受信したときに、PHP の error_log を有効にして Web サーバーの error.log を確認すると便利です。
以上がPHP 構文エラー: トラブルシューティングと解決方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホット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
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











PHPでは、Password_hashとpassword_verify関数を使用して安全なパスワードハッシュを実装する必要があり、MD5またはSHA1を使用しないでください。 1)password_hashセキュリティを強化するために、塩値を含むハッシュを生成します。 2)password_verifyハッシュ値を比較して、パスワードを確認し、セキュリティを確保します。 3)MD5とSHA1は脆弱であり、塩の値が不足しており、最新のパスワードセキュリティには適していません。

PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

PHPは、電子商取引、コンテンツ管理システム、API開発で広く使用されています。 1)eコマース:ショッピングカート機能と支払い処理に使用。 2)コンテンツ管理システム:動的コンテンツの生成とユーザー管理に使用されます。 3)API開発:RESTFUL API開発とAPIセキュリティに使用されます。パフォーマンスの最適化とベストプラクティスを通じて、PHPアプリケーションの効率と保守性が向上します。

PHPタイプは、コードの品質と読みやすさを向上させるためのプロンプトがあります。 1)スカラータイプのヒント:php7.0であるため、基本データ型は、int、floatなどの関数パラメーターで指定できます。 3)ユニオンタイプのプロンプト:PHP8.0であるため、関数パラメーターまたは戻り値で複数のタイプを指定することができます。 4)Nullable Typeプロンプト:null値を含めることができ、null値を返す可能性のある機能を処理できます。

PHPは依然として動的であり、現代のプログラミングの分野で重要な位置を占めています。 1)PHPのシンプルさと強力なコミュニティサポートにより、Web開発で広く使用されています。 2)その柔軟性と安定性により、Webフォーム、データベース操作、ファイル処理の処理において顕著になります。 3)PHPは、初心者や経験豊富な開発者に適した、常に進化し、最適化しています。

PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

PHPで前処理ステートメントとPDOを使用すると、SQL注入攻撃を効果的に防ぐことができます。 1)PDOを使用してデータベースに接続し、エラーモードを設定します。 2)準備方法を使用して前処理ステートメントを作成し、プレースホルダーを使用してデータを渡し、メソッドを実行します。 3)結果のクエリを処理し、コードのセキュリティとパフォーマンスを確保します。

PHPとPythonには独自の利点と短所があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1.PHPは、大規模なWebアプリケーションの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンスと機械学習の分野を支配しています。
