質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.52%

phpが一部コメントアウトとして認識されてしまう。

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 4,349

masaya_46neko

score 178

前提・実現したいこと

Twitterへ連携するサイトを作っているのですが、画像のようにソースコードをphpだと認識してくれずに(?)phpの一部がコメントアウトされてしまいます。
phpサーバー上で動作させています。
このようになります(画像)

該当のソースコード

ソースコードはこのようになっています。

<?php
session_start();//戻ってきた時も使うので、セッション利用開始
// アプリケーション登録した時に発行された鍵などを記述
define("Consumer_Key"   , "[キー等が書いてあります]");
define("Consumer_Secret", "[キー等が書いてあります]");
define('Callback', 'http://twitterlinks.php.xdomain.jp/callback.php');
//ライブラリを読み込む
require "twitteroauth/autoload.php";
use Abraham\TwitterOAuth\TwitterOAuth;
//TwitterOAuthインスタンス生成、リクエストトークン取得
$connection = new TwitterOAuth(Consumer_Key, Consumer_Secret);
$request_token = $connection->oauth("oauth/request_token", array("oauth_callback" => Callback));
//callback.php利用する為、セッションに保存
$_SESSION['oauth_token'] = $request_token['oauth_token'];
$_SESSION['oauth_token_secret'] = $request_token['oauth_token_secret'];
// Twitter認証へリダイレクト
$url = $connection->url("oauth/authorize", array("oauth_token" => $request_token['oauth_token']));
header('Location: ' . $url);
?>

試したこと

teratailの過去投稿を見ていると拡張子がhtmlになっている等しか見つけられませんでした。

phpに詳しい方、ご回答よろしくお願いします。

追記

<?phpが<!--?phpに変換されてしまっているようです。
スクリーンショット

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

checkベストアンサー

+2

responseを見ると、<?php  以下がそのまま返ってきています。
中途半端なコメントになっているのはこれのせいです。

原因は、Webサーバがphpファイルを認識していないからです。
まずは<?php phpinfo();?>が正常に動くようWebサーバを設定してみて下さい。

あと、twitter の API キーは変更しておいて下さい。
今の状況で気がつく人は見れてしまいます。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/04/23 09:44

    ですよね^^;キャプチャ画面を見ると、php のエラーが返っているので、php ファイルは動いてそうです。。。
    responseで表示されたソースをこちらで動作させてみましたが、エラーは出るものの、phpとしては動作しました。
    後はファイル名ですかねぇ。。。それも問題ない気がしますが、念のため変更して稼働確認してもらえますか?

    キャンセル

  • 2017/04/23 10:08

    原因追求は難しくはなりますが、以下の手順で進めてもらえますか?
    1.login.php の中身を全部消し、<?php echo'hello!world.'?>で置き換え稼働を確認
    2.正常稼働したら、<?php を残し、それ以下の部分を復旧
    ファイルが正しく php と認識され、<?php タグが php の開始タグとして機能すれば良いので、試してみて下さい。

    キャンセル

  • 2017/04/23 10:55

    返信が遅れてしまい、申し訳ありません。
    login.phpの中身を<?php echo'hello!world.'?>に書き換えたところやはりコメントアウトされてしまいました。
    そこでphpinfo.phpをリネームし、login.phpとすると正常に動作しました。
    推測ですが文字コードが原因だったのだと思います。login.phpはもともとunicodeで書かれているのに対し、phpinfo.phpはANSIで書かれていました。
    このたびは本当にありがとうございました!

    キャンセル

+1

まずは、PHPが正常に動作しているか確認しましょう。以下の内容だけのファイルを、「phpinfo.php」という名前でサーバ上に置いてみてください。

<?php
phpinfo();

これをブラウザで開いて、

  • PHPに関する詳細情報が出てくる→PHPは正常動作しています。Twitter連携の方のソースコードを再確認しましょう。
  • phpinfo();と表示される、あるいは何も表示されない→PHP自体がうまく動いていません。サーバ設定をチェックしましょう。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/04/23 09:09 編集

    セキュリティ上実行できないのようなことを言われるので、phpは動いたいると思います。
    連携のほうのソースコードを確認してみます。

    キャンセル

  • 2017/04/23 09:11

    セキュリティ上、「PHP自体が」動いていない可能性もあると思うのですが、そちらは大丈夫でしょうか。

    キャンセル

  • 2017/04/23 09:14

    サーバー管理スペースでphpのバージョンを選択できる画面がありましたので、大丈夫だと思います。
    https://www.dropbox.com/s/x34zwuf5ir29wj6/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202017-04-23%2009.13.01.png?dl=0

    キャンセル

-2

phpプログラムは、<?php   ?>と囲むのが原則です。
<head>の前に ?> がないのがおかしいです。
同じく、<body>のあとに <?php がないのがおかしいです。
コードの先頭がどうなっているのかは分からないので、
見える部分でのアドバイスはこの点です。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/04/23 09:09 編集

    このアドバイスは、全く適切ではありません。

    その1: PHPの最後は閉じないほうが安全です(Zend Frameworkの規約に至っては、「PHP コードのみからなるファイルでは、終了タグ ("?>") は決して含めてはいけません。」と禁止されてすらいます)し、元のコードには閉じタグがきちんとあります。
    その2: このファイルは最後にheader('location:')で飛ばしているので、正しく動けば<body>を出す余地もない(画面に出ているのは、上手くいかない表示結果をブラウザ側で無理やり解釈して補ったものと思われます)

    キャンセル

  • 2017/04/23 09:25

    なるほど、?>は慎重な使い方が必要なのですね。勉強になりました。
    ただ、今回は、
    <html>
    <head>
    が途中の中途半端な場所にあるという助言です。リダイレクト込みのソースコードは、サンプル画像のコードの正当部分にあるのか、続きにあるのか、それが分からない以上全く適切ではないことはないと思います。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.52%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる