アプリ版:「スタンプのみでお礼する」機能のリリースについて

PHPは初心者です。HTMLは理解しているつもりです。
問題のある構成はこのようなものです。

<!-- index.php  ブラウザで直接アクセスする場所 -->
<!DOCTYPE html>
<html lang="ja">
<body>
<?php
echo"<b>TEST OUTPUT</b>"; //ここは正しく実行される
require"system/SampleFile.php";
?>
</body>
</html>


<!-- SampleFile.php   外部ファイル -->
<?php
echo"なにか";
?>


2つ目の外部phpファイルのほうで、echoを書いても、
変数を定義しても、必ず 
TEST OUTPUT
Parse error: ・・・・・
と表示されてしまいます。

なお、
<?php
?>
を省いて、echo"なにか";
と書いた場合は、
TEST OUTPUT
echo"なにか";

と、そのまま表示されてしまいます。
外部ファイルだけ正しく実行できないのは
何が原因なのでしょうか?

ちなみにhostingerのサーバー?とドメイン?を使って
アップロード・表示しています。

A 回答 (3件)

こんにちは。



スマホで見ているせいか、echoとダブルクオートとの間のスペースが見えないようですが、これは実際は入っているのですよね。

いずれにしても、Parse Errorの具体的な記載があると、より原因特定の参考になると思いますが、いかがでしょうか。
    • good
    • 0
この回答へのお礼

そうですね エラー内容を書きます
↓ echo ”なにか”; の場合(スペースは入れてなかったのですが入れてみても同じでした)
Parse error: syntax error, unexpected 'echo' (T_ECHO) in /home/u228856714/public_html/system/SampleFile.php on line 4

↓ $myInt = 2;の場合
Parse error: syntax error, unexpected '$myInt' (T_VARIABLE) in /home/u228856714/public_html/system/SampleFile.php on line 4

お願いします。

お礼日時:2015/07/26 18:19

system/SampleFile.php の中、たぶん3行目に間違いがあると思われます。

    • good
    • 0
この回答へのお礼

そうですね。自分も まずはそう思います。

お礼日時:2015/07/27 18:11

unexpected 'echo' は、その前の行のラストでセミコロンを忘れている場合に多いようですね。

見た感じでは入っているようなのですが、念のため再度のご確認をお勧めします。

あとは、requireやechoの後にはとりあえずスペースを入れた方が良いと思います。

それでもおかしい場合は、いずれにしてもパースエラーはセミコロンやダブルクオートをとじわすれていたり、何か余計なものが入っていて、構文が崩れたときに起こりますので、いろいろいじってみて変化を見てみると良いと思います。

お勧めなのが、徹底したシンプル化です。まずはコメントを全て取ってみて、echo 内もHTMLタグを入れずに、可能な限りシンプルにします。(前後のHTMLも取ってしまってもいいかもしれません)

不要な改行も取り、テキストを選択状態にして反転し、全角スペース(エディタによっては隠れた厄介者になります)が混じっていないか確認します。

万一ですが、文字コードがらみの不具合の可能性を消すため、echo 内の全角文字を全て半角英数にしてしまった方が良いと思います。

コードをWEBからコピー&ペーストした部分がある場合、クオートなどが全角だったり、異なる改行コードなどのゴミが入っていることもありますので注意が必要です。

クオートをダブルクオートからシングルクオートにしてみると、変化がある場合もあります。(一見論理的に不要でも、意外な効果がある場合があるものです)

大事なのは、上記の調査をいっぺんにやらずに、1つ行うたびに実行(リロード)して変化を見ることだと思います。

それでもだめなら、まっさらな状態からこまめに動作を確認しつつ書き直してみると、発見がある場合もあります。

長くなりましたが、たぶん些細な「何か」が原因だと思いますので、案外No.3あたりでアッサリ指摘してくれるかもしれません・・・が、「私ならこうする」という対処方ですので、ご参考になれば幸いです!
    • good
    • 0
この回答へのお礼

ご回答を参考にして原因が分かりました。
実際には
<?php の直後同じ行にコメントを入れていたのが原因だったようです。

ようやくデバッグに取り掛かれます。
ありがとうございました。

お礼日時:2015/07/27 18:31

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!