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

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

新規登録して質問してみよう
ただいま回答率
85.50%
phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

ChatWork

業務の効率化を目的としたコミュニケーションツール。 グループチャット、ビデオ・音声通話、ファイル共有、タスク管理などの機能を備えています。マルチデバイス対応で、ブラウザだけでなくタブレットやスマートフォンでも利用可能です。

Q&A

解決済

4回答

6927閲覧

phpで謎の構文エラー

keys

総合スコア215

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

ChatWork

業務の効率化を目的としたコミュニケーションツール。 グループチャット、ビデオ・音声通話、ファイル共有、タスク管理などの機能を備えています。マルチデバイス対応で、ブラウザだけでなくタブレットやスマートフォンでも利用可能です。

0グッド

0クリップ

投稿2017/07/11 23:45

編集2017/07/11 23:47

どこがおかしいのか、いまいち掴めません、php詳しいかた、教えていただければ幸いです

やりたいこと

phpでチャットワークのapiを叩いてphpに記述してある文字列をchatworkの部屋に文字列を送
りたい

起こっている現象

下記のサイトを完全にコピペして、ルームidとapiを書き換え実行してみたのですが、なぜか構文エラーになり、実行ができない

http://www.sukicomi.net/2015/10/chatworkapi-postmessage.html

試したこと

err

1 2PHP Parse error: syntax error, unexpected end of file in /var/www/html/chat.php on line 52 3

閉じタグを削除して、記述ミスがないか確認した

画像

イメージ説明

コード

php

1 2<?php 3 4// 投稿先とAPIトークンを指定 5$room_id = yyyyyy; // ルームID。URLからも確認できます 6$api_token = "******************"; // APIトークン 7 8// メッセージ本文 9$body = <<<EOD 10テストメッセージでござる。 11このメッセージはChatwork APIにより自動で投稿されてるでござるよ。 12EOD; 13 14 15 16// ヘッダ 17header("Content-type: text/html; charset=utf-8"); 18 19// POST送信データ 20$params = array( 21 'body' => $body 22); 23 24// cURLに渡すオプションを設定 25$options = array( 26 CURLOPT_URL => "https://api.chatwork.com/v1/rooms/{$room_id}/messages", // URL 27 CURLOPT_HTTPHEADER => array('X-ChatWorkToken: '. $api_token), // APIトークン 28 CURLOPT_RETURNTRANSFER => true, // 結果を文字列で返す 29 CURLOPT_SSL_VERIFYPEER => false, // サーバー証明書の検証を行わない 30 CURLOPT_POST => true, // HTTP POSTを実行 31 CURLOPT_POSTFIELDS => http_build_query($params, '', '&'), // POST送信データ 32); 33 34// cURLセッションを初期化 35$ch = curl_init(); 36 37// cURL転送用の複数のオプションを設定 38curl_setopt_array($ch, $options); 39 40// cURLセッションを実行 41$response = curl_exec($ch); 42 43// cURLセッションをクローズ 44curl_close($ch); 45 46// 結果のJSON文字列をデコード 47$result = json_decode($response); 48 49// 結果を出力 (メッセージID返ってきてる) 50var_dump($result); 51 52?> 53

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

miyahan

2017/07/12 00:05

文法ミスは無いように見えますね・・・。ちなみに投稿されたサンプルコードをコピーして新規ファイルを作り、それを実行しても同じエラーはおきますか? またOS・PHPのバージョンは何でしょうか?
keys

2017/07/12 01:09

エラー、起きます。。。 PHP 5.4.1 CentOS7 です
miyahan

2017/07/12 02:33

同じ環境・同じソースでエラーが再現しないので、お使いのエディタが何か悪さをしているような気がします。コード補完機能の無いテキストエディタを用意し、投稿したソースをコピペ(右上のクリップボードコピーボタンを使ってください)して UTF-8(BOMなし) / LF で保存し実行してみてください。まだエラーになるでしょうか?
guest

回答4

0

ベストアンサー

11行目 EOD; の後に空白があるからではないでしょうか。
ヒアドキュメントの終わりはセミコロン以外は付けてはいけません。

投稿2017/07/12 00:18

naga3

総合スコア1293

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2017/07/12 00:33

たしかに、シンタックスハイライトをみても、「EOD;」で抜け切れていない感じですね。 エディタによっては「保存時に行末のスペースを全て削る」設定があるので、入れておくと便利かもしれません。
keys

2017/07/12 01:07

たしかに、それが原因かもしれません、試してみます。
keys

2017/07/12 07:38

素晴らしいご回答ありがとうございました、助かりました^^
guest

0

閉じタグ削除はダメでしたか。
あとは気になるのは2点。
chat.phpはUTF-8のBOMなし(UTF-8N)で保存されていますか?
もうひとつ、ヒアドキュメント周りが怪しい感じですので、いったん

php

1$body="テスト";

のような無難なコードに変えてみてエラーが出る確認してみるのがいいと思います。

投稿2017/07/12 01:08

zohnam

総合スコア1441

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

https://phpcodechecker.com/
phpコードチェッカーで検査してみましたが問題はないようです。

50行でphpコードは終了しているはずにも関わらず52行目がエラーだと言われているようですから、

php

1?>

この終了タグを消してみて下さい。
終了タグ後の改行やスペースなどのささいな文字が問題を引き起こしている可能性があります。

投稿2017/07/12 00:21

zohnam

総合スコア1441

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

keys

2017/07/12 01:07

終了タグは消してみたのですが、解決には至りませんでした...
guest

0

$options配列に定数を渡していますが、どこにも定数が指定されていません。

php

1// cURLに渡すオプションを設定 2$options = array( 3$options = array( 4 'CURLOPT_URL' => "https://api.chatwork.com/v1/rooms/{$room_id}/messages", // URL 5 'CURLOPT_HTTPHEADER' => array('X-ChatWorkToken: '. $api_token), // APIトークン 6 'CURLOPT_RETURNTRANSFER' => true, // 結果を文字列で返す 7 'CURLOPT_SSL_VERIFYPEER' => false, // サーバー証明書の検証を行わない 8 'CURLOPT_POST' => true, // HTTP POSTを実行 9 'CURLOPT_POSTFIELDS' => http_build_query($params, '', '&'), // POST送信データ 10); 11```ではありませんか? 12 13あとParseエラーにはなりません。これでコード全部ですか?

投稿2017/07/12 00:21

shi_ue

総合スコア4437

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

keys

2017/07/12 01:08

んー、一応上記のコードが全てなのですよね...定数の部分、確認してみます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問