購入した本に書かれていたスクリプトをXAMPP、Eclipseという環境下で
実行したところうまく作動したのに、サーバーに転送して実行すると、
「Parse error: syntax error, unexpected 」というエラーが出ます。
しかもエラーとして指定された行はコメントアウト(//)しているところです。
これはどうしたらよいか教えてください。
なお、質問者はまだ勉強を初めて間がないので、
初心者にもわかるようご配慮くださいませ。
以上よろしくお願いします。
直訳すると「分析エラー:構文エラー,予期せぬ…」となりますが、
重要なのはunexpectedの後なので、その情報があれば解決は早いです。
また、エラー発生行に関してですが、「エラーが発生した行」ではなく、
「エラーを検知した行」なので気をつけてください。
たとえば、
1:<?php
2: $a = "" //2行目でセミコロン抜け
3:?>
この処理を実行した場合、
Parse error: syntax error, unexpected ';' in xxx.php on line 3
と表示されます。
なお、デバッグ方法についてはこのサイトが参考になります。
何となく文字コードがいたずらしている気がしますが...
(特にエラーとして指定された行よりも先頭側に)
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
もしこれが問題だとしたなら、
具体的にどう対処すればよいのでしょうか?
前回の質問でした私の対応以外に何かすべきことがあるようでしたら、
具体的な手順も教えてもらえるとうれしいです。
ご回答ありがとうございます。
大変参考になりました。
デバッグの方法についてはこれから勉強します。
エラーを全部書くと下記のようになります。
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という環境ではちゃんと表示されます。
また何か提示すべき必要な情報がありましたらお知らせください。