• ベストアンサー

htmltemplateのBBS│レンサバ→XP宅鯖移設でエラー

htmltemplateのBBS│レンサバ→XP宅鯖移設でエラー HTMLTEMPLATEをベースに作られた、 『写メールBBS』 ttp://php.s3.to/bbs/bbs7.php というケータイ用の掲示板を使っているのですが、 レンサバから、自宅XPサーバーに環境を移したとたん、ブラウザ表示の際に下記のエラーが出るようになりました。 Parse error: syntax error, unexpected T_VARIABLE, expecting T_STRING in C:\xampp\htdocs\htmltemplate.inc on line 174 ********該当行*************** $str2=str_replace("[loop $m]", "<?php for(\$cnt[\"$n\"]=0;\$cnt[\"$n\"]<count(\$val$ind);\$cnt[\"$n\"]++){ ?>", $str2); ***************************** XAMPPforWINDOWS 1.7.2 PHP5.3.0 です。 ■1: レンサバでは予め整っている基本的な環境設定が、 XAMPPでできていない ■2: 写メールBBSのマニュアルに.cgiファイルのパーミッションを変更してくれ云々と書いてあるのに、 XPサーバではパーミッション操作ができない事が影響している ■3: その他 ttp://memo.17n.info/log/eid26.html ■4: EOM;の後の半角、改行やTABを無くす、などの書式の問題 諸々試行錯誤しているのですが、 はまっています(涙 えらいかた、ご意見ください。

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

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

PHP5.3.0で、ダブルクォーテーション内の文字列の解析機(パーサ)が変更されたのかもしれません。 エラー自体は、構文エラーですので、うまく処理出来ていないことが考えられます。 なので、該当箇所を、 $replacement = '<?php for($cnt["'.$n.'"]=0;$cnt["'.$n.'"]<count($val'.$ind.');$cnt["'.$n.'"]++){ ?>'; $str2=str_replace("[loop $m]",$replacement,$str2); このような感じで、シングルクォーテーション+結合演算子「.(ドット)」で先に変数に渡してやって それをstr_replaceに入れてやるということで回避できるのではないでしょうか。 ただ、似たような記述が結構たくさんあるので、それらを全て修正素る必要があるかもしれません。

diveman
質問者

お礼

ケータイから失礼します。 ダブルクォートの解釈の問題とのご回答ありがとうございましたm(__)m 試してはいませんが、QAをみにきた全ての皆さんのヒントになるものと思います。 私の場合は、xamppのバージョンが新しいと、逆に動かなくなる機能があるから、xampp(やperl)のバージョンを下げたら直った、という記事を見て、実際に下げたら直りました。 スミマセン出先なので、確か1.6.3だったかと思います。自宅で作るxamppxpサーバーの参考書についてきたcdのデータです。 phpバージョンが下がったことにより、hogehogeさんの言うとおり、ダブルクォート解釈が変わったのかも知れません。 ちなみに xamppの再インストールは意外に短時間で終わり、 perlも参考書通り.plを、パスをどこから呼び出しても同じプログラムを呼びに行くようファイルの関連付けもついでに行ったのも良かった可能性があります。 xamppではまっている方がいらしたら、バージョンダウンはオススメです。 特に私のような初心者で、参考書をたよりにしている方は、新しいバージョンになるとフォルダ構成やあるはずの記述が別物になっていたりするので、参考書についてるバージョンでガイド通りが良いかと痛感しました。 いずれにしても、新しければ良い機能やセキュリティが高いんじゃないか、という考え方は捨てます。 hogehogeさん改めてありがとうございましたm(__)m