人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPについて質問です。

購入した本に書かれていたスクリプトをXAMPP、Eclipseという環境下で
実行したところうまく作動したのに、サーバーに転送して実行すると、
「Parse error: syntax error, unexpected 」というエラーが出ます。
しかもエラーとして指定された行はコメントアウト(//)しているところです。
これはどうしたらよいか教えてください。

なお、質問者はまだ勉強を初めて間がないので、
初心者にもわかるようご配慮くださいませ。
以上よろしくお願いします。

●質問者: taroemon
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:eclipse PHP XAMPP うご エラー
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● Numeric
●35ポイント

直訳すると「分析エラー:構文エラー,予期せぬ…」となりますが、

重要なのはunexpectedの後なので、その情報があれば解決は早いです。


また、エラー発生行に関してですが、「エラーが発生した行」ではなく、

「エラーを検知した行」なので気をつけてください。

たとえば、

1:<?php

2: $a = "" //2行目でセミコロン抜け

3:?>

この処理を実行した場合、

Parse error: syntax error, unexpected ';' in xxx.php on line 3

と表示されます。


なお、デバッグ方法についてはこのサイトが参考になります。

ホリデープログラミング入門?アナログなデバッグ術 その1

◎質問者からの返答

ご回答ありがとうございます。

大変参考になりました。

デバッグの方法についてはこれから勉強します。


エラーを全部書くと下記のようになります。

Parse error: syntax error, unexpected '{' in /var/www/home/ユーザー名/public_html/ドメイン名/test.php on line 15


当該のスクリプトは下記の通りです。

14行目 try{

15行目 //コメントアウト文

16行目 $doc=new domDocument();


繰り返しになりますが、XAMMP、ECLIPSEという環境ではちゃんと表示されます。

また何か提示すべき必要な情報がありましたらお知らせください。


2 ● tezcello
●35ポイント

何となく文字コードがいたずらしている気がしますが...

  1. 問題のスクリプトに日本語が含まれていませんか?

(特にエラーとして指定された行よりも先頭側に)

  1. そのファイルはどのエンコード(文字コード)で保存されたでしょうか?

Shift-JIS は推奨されていないです。

http://www.php.net/manual/ja/ref.mbstring.php


(以下、今回のご質問が解決されてからのお話ですが...)

また、XAMPP とターゲットのサーバでのマルチバイト文字列の環境は一致していますか?

<?php
phpinfo();
?>

だけ記述したファイル(例えばinfo.php)を用意してブラウザで表示してみるとPHPの環境が表示されます。

この中の、mbstring の項目の中の値がXAMPPとターゲットのサーバとで異なっていると、動作が予想通りにならない可能性が高いです(プログラム的に対処しているか、日本語を使っていなければ無問題です)

mbstring.language

mbstring.internal_encoding

mbstring.http_input

mbstring.http_output

mbstring.encoding_translation

これらが違っていて、なかなか気がつかなかった経験があります。

◎質問者からの返答

親身なご回答ありがとうございます。


>問題のスクリプトに日本語が含まれていませんか?

コメントアウトの文章以外には使ってません。


>どのエンコード(文字コード)で保存されたでしょうか?

UTF-8です。


>XAMPP とサーバでのマルチバイト文字列の環境は一致していますか?

実はそれに関しては下記のような質問をしました。

http://q.hatena.ne.jp/1202326856

php.iniなどいじってみたのですが、

どうにもならなかったので、放っておいたままにしておきました。


現状では下記の通りになっています。

mbstring.language :neutral

mbstring.internal_encoding :no value

mbstring.http_input :pass

mbstring.http_output :pass

mbstring.encoding_translation :Off


もしこれが問題だとしたなら、

具体的にどう対処すればよいのでしょうか?

前回の質問でした私の対応以外に何かすべきことがあるようでしたら、

具体的な手順も教えてもらえるとうれしいです。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ