「Parse error: syntax error, unexpected」というエラーが発生して解消方法が分からない

このQ&Aのポイント
  • 自宅サーバーでphpを使用したhtmlファイルを読み込むと、たまに「Parse error: syntax error, unexpected」というエラーが発生します。再起動後は正常に表示されますが、しばらくすると再びエラーが発生します。
  • 問題はphpの記述にあるのか、apacheやphpの設定にあるのか、それとも別の箇所に問題があるのか、切り分けができません。
  • 利用している環境はCentOS5.1で、apacheのバージョンは2.2.8、PHPのバージョンは4.4.8です。
回答を見る
  • ベストアンサー

「Parse error: syntax error, unexpected」がたまに発生して解消方法が分からずに困っております。

自宅サーバーでhtmlファイル内に一部phpを記述してブラウザで読み込んだ所、テンポラリで「Parse error: syntax error, unexpected(以下略)」というエラーが発生します。 その際、apacheを再起動し同じhtmlにアクセスするとエラーは発生せず、正常に閲覧できました。 ただし、しばらく使っていると、また同じ現象が出るようになります。 こちらで試した限りでは、現象が出るhtmlは(一部であれ)phpが使用されているものに限られ、phpをまったく使用していない普通のhtmlでは上記のような現象は発生していないみたいでした。 本件パーマネントではなくテンポラリで現象が発生する為、phpの記述自体に問題があるのか、phpやapacheなどの設定に問題があるのか、それとも全く別の箇所に問題があるのか、問題点の切り分けが出来ずに困っております。 その為、どんなことでも結構ですので、何かしらアドバイスいただける方がいらっしゃいましたらご教示のほど、よろしくお願いします。 なお、apacheやphpの設定変更、及び再インストールなどを試す事は可能です。 ちなみに環境は下記のようになっております。 OS:CentOS5.1 apache:2.2.8 PHP:4.4.8 また、上記情報のみでは切り分けが困難な場合、どのような情報が必要かお教えいただけると助かります。 以上、よろしくお願いします。

  • PHP
  • 回答数4
  • ありがとう数11

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

以前、同じような状態になったことがあります。 ソースの記述は何も間違っておらず、しかしたまにエラーが発生する。 結局、原因は掴めていないのですがおそらくPHPのコンパイルに失敗している気がします。 PHPソースの文字コードを明示的に指定してみてください。 以下、.htaccessでの設定例 php_value mbstring.script_encoding EUC-JP これで一応当環境では、エラーが出なくなりました。

iroha_168
質問者

お礼

ありがとうございます。 「mbstring.script_encoding Parse error」で検索した所、今私の環境で発生している問題と同じと思われる問題を複数発見致しました。 下記はその一例となります。 http://blog.factree.co.uk/memo/000028.html http://d.hatena.ne.jp/ha-g1/20080602 どうもこれが怪しそうです。 mookun2007さんもすでにご存知と思いますが、このような現象が発生された方は下記のどちらかの対応をされているようでした。 1. --enable-zend-multibyteコンパイルオプションなしでビルドし直す。 (これをつけてビルドするとscript_encodingの設定が出来るようになるようです。 なお私の環境では--enable-zend-multibyteコンパイルオプション付きでビルドしております)。 2. php.iniないしは.htaccessでscript_encodingの設定を行う。 1, 2共に行う事は可能ですが、簡単に試せるのは2なので、先ほど.htaccessにscript_encodingの設定を行いました。 これでしばらく様子を見てみようと思います。 なお作業前にphpinfoの情報を確認した所、mbstring.script_encodingの設定は「no value」となっておりました。 それとこの現象は常に発生するわけではないため、直ったか否かを判断する為にしばらく時間をいただければと思います。 そして解消したと判断できたら質問を閉め切らさせていただきたいと思います。 以上、よろしくお願いします。

iroha_168
質問者

補足

しばらく様子見してみましたが、その後現象が出なくなった為、今回の対応で修正されたものと思われます。 どうもありがとうございました。

その他の回答 (3)

  • altrn
  • ベストアンサー率62% (10/16)
回答No.4

Parse error : 解析エラー syntax error : 構文エラー unexpected xxx ... : 出てくるべきでないところにxxxが出てきている... とのことで、比較的一般的なエラーだと思いますよ。 「phpの記述自体に問題がある」 でいいとおもいます。unexpected以下のファイル名、行番号付近をチェックしてみてください。

iroha_168
質問者

お礼

ありがとうございます。 詳しくはmookun2007さんとkikutomaさんへのお礼に記載した内容と重複いたしますので省きますが、まずはmookun2007さんのご指摘の方法で様子見をしてみたいと思います。

  • tsaito
  • ベストアンサー率68% (17/25)
回答No.2

Parse error: syntax error, unexpected の後も省略せず、 全部書いた方が回答が得られると思います。 エラー発生のモジュール名や行数が書かれていないでしょうか。

iroha_168
質問者

お礼

ありがとうございます。 詳しくはmookun2007さんとkikutomaさんへのお礼に記載した内容と重複いたしますので省きますが、まずはmookun2007さんのご指摘の方法で様子見をしてみたいと思います。

  • kikutoma
  • ベストアンサー率38% (13/34)
回答No.1

()[]{}の閉じ忘れはないですか?? タブや全角スペース全角スラッシュとか入っていないですか?

iroha_168
質問者

お礼

ありがとうございます。 これは質問時私の情報記載漏れとなりますが、本件は私の自作のphpにとどまらず、一般公開されている複数のCMSツールのphpでも発生しております。 その為、「Parse error: syntax error, unexpected」以降のエラー内容はアクセスするファイルにより異なったものとなります。 また、一般公開されていて私がソースに一切触っていない複数のphpファイルでも現象が出る関係上、括弧の閉じ忘れなどがある可能性は低いのかなと判断しております。 今皆さんからアドバイスいただいた中ではmookun2007さんのご指摘の内容がもっとも可能性が高そうな気がしますので、まずはmookun2007さんの方法を試してみて様子を見てみたいと思います。

関連するQ&A

  • PHPのエラー「Unexpected character ...」「syntax error, unexpected ...」について

    PHP Warning: Unexpected character in input: ''' (ASCII=39) state=1 in /home/***/***.php on line 25 PHP Parse error: syntax error, unexpected '<' in /home/***/***.php on line 26 という2行のエラーが表示されました。 まったく明快な答えは探せませんでした。 もしも少しでも手がかりになるような情報がありましたら教えて下さい。 お願いします。

    • 締切済み
    • PHP
  • Parse error: syntax error

    Parse error: syntax error, unexpected $end in ...on line 19について wordpressの方で、functions.phpに書いたものが、前に一度機能していたはずのソースが他の記述を加えたりしていたらエラーになってしまいました。今は下記だけです。どこが間違っているのでしょうか?前と同じソースをコピペしているので、原因がわかりません。 <?php function replaceImagePath($arg) { $content = str_replace('"images/', '"' . get_bloginfo('template_directory') . '/images/', $arg); return $content; } add_filter('the_content', 'replaceImagePath');

    • 締切済み
    • PHP
  • PHPのParse errorについて質問

    PHPのParse errorについて質問ですが、 昨日より、Apacheサーバーなどの設定を変更していないにも関わらず、急に以下の様なエラーが頻繁に 表示されます。 原因は、なんでしょうか? どうやって修正すればいいのでしょうか? Parse error: parse error, unexpected T_ELSE in ディレクトリ名/index.php on line 43

    • ベストアンサー
    • PHP
  • syntax error, unexpected $end  の意味を教えてください

    教えてください、困っています。 コードを走らせると、以下のようなコメントが出ます。 「Parse error: syntax error, unexpected $end in C:\Program Files・・・・・.php on line 500」 最後の終わり方が文法エラーといってるようなのですが、</body></html>で終わっており、{ }の書き方も問題ありません、 他に考えられる原因はどのようなものがあるのでしょうか。 Editorは秀丸を使っています。 いくら考えても分かりません。 最後には[EOF]がついていますが何か関係しているのでしょうか。 [EOF]がついての設定ミスとかが原因でしょうか。 途中に書いている表示のコードは正常にブラウザからみれますが、このコードのところに来ると上記のようなエラーメッセージがブラウズされます。 また、[EOF]の表示等の設定はどのように設定しておけばよいのでしょうか。

    • ベストアンサー
    • PHP
  • Parse errorなんですが・・・

    Parse error: syntax error, unexpected '&' in C:\Program Files\Apache Group\Apache2\htdocs\php10\dbtest1.php on line 2 というエラーがでます。 ホスト名、ユーザー名、パスワードはあっていると思うんですが・・・ というかホスト名とはなんのことでしょうか?? ユーザー名、パスワードはデータベースでの設定ですよね? <?php &con=mysql_connect("localhost","sample","password") or die("接続できません。"); print"接続に成功しました。"; mysql_close(&con); ?> 本当に初心者ですみません ご教授、お願いいたします。

    • ベストアンサー
    • PHP
  • PHPのエラー教えて!parse error, unexpected T_STRING

    すみません PHPのエラー教えてください ------------------------------内容は↓ <?php // まずはクラス名を指定 class AboutMe { // 変数のタイプを指定します ●ここ●public $name = "デイビッド田中"; public $email = "david.tanaka@davidtanaka.localdomain"; public $phone = "011-81-333-333-3333"; } // クラスを呼び出します。 $About = new AboutMe(); // 情報を表示します print($About->name); ?> ---------------------------------ココまで ●ここ●は印のために入れたもの エラーは parse error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in ●ここ● エラー番号は●ここ●を指しています WindowXP、Apache、PHP5

    • ベストアンサー
    • PHP
  • どうしてもParse errorがでます

    独習PHPという本でプログラミングを勉強しています。 本の通りにプログラムを書いたのですがどうしてもエラーがでます。 Parse error: parse error, unexpected ';' in C:\Program Files\Apache Group\Apache2\htdocs\insert_process.php on line 7 セミコロンも確認しました。どうかご教授ください。 以下がソースです。 <?php try { $db=new PDO('sqlite:samples.sqlite'); $db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); $db->exec("INSERT INTO address(name,address,tel,email) VALUES(" .$db->quote($_POST['name'].",".$db->quote($_POST['address']."," .$db->quote($_POST['tel'].",".$db->quote($_POST['email']).")"); header('Location: http://'.$_SERVER['HTTP_HOST'] .dirname($_SERVER['PHP_SELF']).'/insert_form.php'); } catch (PDOException $e){ print('エラー発生:'.$e->getMessage()); } ?>

    • ベストアンサー
    • PHP
  • リロードすると直るParse error

    はじめまして 現在 FreeBSD 4.7 Apache/1.3.33 PHP 4.3.10 でwebアプリケーションを作成しているのですが タイトル通り、リロードすると直るParse errorが出てきて困っています。 リロードすると直るので、文法等の間違いはないと思うのですが・・・・ http://okweb.jp/kotaeru.php3?q=1261486 でも同じような現象だったみたいですが・・・PHP5みたいだったので、新たに質問させてもらいました。 解決方法ご存知の方よろしくお願い致します

    • ベストアンサー
    • PHP
  • 【初歩】 極単純なFOR文がなぜ「parse error」になるのかわかりません…

    下記のサンプルが,どう見直しても Parse error: parse error, unexpected T_VARIABLE in C:\hoge.php on line 2(2行目とは$str1 = "1";のこと). となってしまうのですが,なぜでしょうか. 下記は質問向けにアレンジしたものですが 本番環境の方では少しメッセージが異なり: Parse error: parse error, unexpected T_FOR in C:\hoge.php on line xxx. と,まあいずれでもエラーになってしまうのですけど・・・ <? php $str1 = "1"; $str2 = "2"; $str3 = "3"; for ($Num = 1; $Num <= 3; $Num++) { echo ${"str" . $Num}; } ?>

    • ベストアンサー
    • PHP
  • syntax error, unexpected '}' というエラーの対処法

    PHPを習い始めて三日目になるのですがParse error: syntax error, unexpected '}' in C:\Program Files\Apache Group\Apache2\htdocs\****\****\game.php on line 33 というエラーがでるのですが33行目前後のどこをなおせばいいのでしょうか? ・game.php <html> <head> <title>数当てゲーム</title> </head> <body> <h1 style="background:#cccccc">数当てゲーム</h1> <form method="POST" action="game.php"> 1~100までの数を入力してください <input type="text" name="answer" size="5" maxlength="3" /> <input type="sbumit" value=回答" /> </form> <hr /> <?php session_start(); if(is_null($_SESSION['answer'])){ mt_stand(microtime()*1000000); $_SESSION['answer']=mt_rand(1,100); $_SESSION['game_cnt']=0; } if($_POST['answer']!=""){ $_SESSION['game_cnt']++; if($_session['answer']==$_POST['answer']){ print("おめでとうございます". $_SESSION['game_cnt']."回で正解しました!"); session_destroy(); }else{ if($_SESSION['answer']>$_POST['answer']){ print("もう少し大きいです。"); }else print("もう少し小さいです。"); } } } ?> </body> </html> それとこの間違えたところをなおしたあとはいつもコンピュータを再起動しないと修正したところが適用されないのですがほかに方法はないですか?基本的な質問ですいません。

    • ベストアンサー
    • PHP