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

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

ただいまの
回答率

88.92%

Cloud9 エラーの箇所がわからない。

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 2,015

ryohasegawa

score 124

イメージ説明
画像のコードを書いて、画像右のコードで使用関数を別ファイルにしたものが、画像左です。
これをCloud9の実行環境で実行すると、イメージ説明
のようなエラーが返ってきました。
見てみると、画像左のコードの2行目のが不要みたいな事を言われているんですが、他に原因はありますか?

ちなみに、Cloud9のPHPのバージョンは 7.0.13にしたんですが、Apacheの方が設定がうまくいってないみたいです。なので、実行環境としては、Apacheのデフォルトの環境だと思います。

追記
サンプルプログラムと見比べました => 同じでした。
Macのローカル開発環境で実行してみました。 => 正常に動作しました。
以上のことからみて、Cloud9側の設定の問題かと思ったんですが、どうでしょう?

Cloud9のデータのどこをいじればphp7の実行できますでしょうか?
PHP -vの実行結果は次の画像です。
イメージ説明
必要かどうかわかりませんがapache2 -vの実行結果も
イメージ説明

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

質問への追記・修正、ベストアンサー選択の依頼

  • ryohasegawa

    2016/12/08 23:02

    Cloud9にデフォルトで入っているPHPは7にしたのですが、Apache2の設定とうまく噛み合っていないみたいなんです

    キャンセル

  • 退会済みユーザー

    退会済みユーザー

    2016/12/09 08:46

    そもそも、コマンドがバージョン7だからといってApacheでそれを使っているとは限らない

    キャンセル

  • 退会済みユーザー

    2016/12/09 23:58

    こちらの質問が他のユーザから「やってほしいことだけを記載した丸投げの質問」という指摘を受けました
    「質問を編集する」ボタンから編集を行い、調査したこと・試したことを記入していただくと、回答が得られやすくなります。

回答 2

+4

{ がくるべき場所に、期待されていない : があると書いてあります。

function funcName() : type {
}

という書き方はPHP7から書ける記述です。
実行環境が、7以上になっていないためと思われる。

echo phpversion();

で確認して見ては?
質問中のソースコードはテキストで書いてください。

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2016/12/11 11:33

    インストールできました。
    ENTER を実行していなかったのが原因だったみたいです。たくさんの解答有難うございました。

    キャンセル

  • 2016/12/11 11:41

    「NTER を実行していなかったのが原因だったみたい」それがなぜできなかったことに繋がるのか、わかるように説明してください。

    キャンセル

  • 2016/12/11 22:42

    NTER を実行せずに、次のコマンドを実行していたため、コマンドが読み込まれていなかったからだと思います。

    キャンセル

checkベストアンサー

+2

画像左のコードの2行目の{が不要みたいな事を言われているんですが

expect は期待値とかでよく使う単語なので「'{'がくるはずの位置に':'がきている」みたいな意味と読むのが普通かと思います。英語がまったくだめでもgoogle翻訳を使えば、エラーメッセージの日本語訳は以下のようになるので、意味が逆であることはすぐわかります。

パースエラー。 構文エラー、予期しない ':'、/ home / ubuntu / workspace / 6 / 6-7 include.phpの '{'が2行目にあると想定しています。

':float'が構文エラーになっていることがわかったので、PHPの構文について調べてみます。
※PHPはOSSの設定フィアルを編集する際に少し目にすることがあるだけで構文まともに知らないので。

「php 関数 戻り値 型指定」検索

戻り値の型指定はPHP7で追加されたようですね。

ここまでで実行環境がPHP7になっていないのは分かるので、確認するのはソースコードではなく環境設定周りになります。

【追記】

以下を参考にPHP7環境設定してみました。

インストールされているPHPを確認したところ、PHP5でした。

$ dpkg -l | grep php

以下のコマンドでPHP7をインストール。

$ sudo add-apt-repository ppa:ondrej/php
$ sudo apt-get update
$ sudo apt-get install libapache2-mod-php7.1

apacheのPHP設定変更

$ sudo a2dismod php5
$ sudo a2enmod php7.1

デフォルトのコードに「phpinfo();」追加

<html><body>
<?php
// A simple web site in Cloud9 that runs through Apache
// Press the 'Run' button on the top to start the web server,
// then click the URL that is emitted to the Output tab of the console

echo 'Hello world from Cloud9!';

phpinfo();

?>
</body>
</html>

バージョン確認

イメージ説明

【追記2】

PHP7.0をインストールしてみた。

$ sudo apt-get install libapache2-mod-php7.0

apache設定変更

イメージ説明

バージョン確認

イメージ説明

【追記3】

インストール済みのパッケージ確認

$ dpkg -l | grep mod-php

ii  libapache2-mod-php5                    5.5.9+dfsg-1ubuntu4.20              amd64        server-side, HTML-embedded scripting language (Apache 2 module)
ii  libapache2-mod-php7.0                  7.0.14-1+deb.sury.org~trusty+1      amd64        server-side, HTML-embedded scripting language (Apache 2 module)
ii  libapache2-mod-php7.1                  7.1.0-3+deb.sury.org~trusty+1       amd64        server-side, HTML-embedded scripting language (Apache 2 module)

インストール可能なパッケージの確認

$ apt-cache search mod-php                                                                                                                                   
libapache2-mod-php5 - server-side, HTML-embedded scripting language (Apache 2 module)
libapache2-mod-php5filter - server-side, HTML-embedded scripting language (apache 2 filter module)
libapache2-mod-php5.5 - server-side, HTML-embedded scripting language (Apache 2 module)
libapache2-mod-php7.0 - server-side, HTML-embedded scripting language (Apache 2 module)
libapache2-mod-php - server-side, HTML-embedded scripting language (Apache 2 module) (default)
libapache2-mod-php5.6 - server-side, HTML-embedded scripting language (Apache 2 module)
libapache2-mod-php7.1 - server-side, HTML-embedded scripting language (Apache 2 module)

【追記4】

インストール可能なパッケージの一覧を確認する。
⇒php5しかない

$ apt-cache search mod-php
libapache2-mod-php5 - server-side, HTML-embedded scripting language (Apache 2 module)

phpのパッケージリポジトリを追加する。

$ sudo add-apt-repository ppa:ondrej/php
Co-installable PHP versions: PHP 5.5, 5.6, PHP 7.0 and batteries included.

You can get more information about the packages at https://deb.sury.org

For PHP 5.4 on Ubuntu 12.04 use: ppa:ondrej/php5-oldstable

BUGS&FEATURES: This PPA now has a issue tracker: https://deb.sury.org/#bug-reporting

PLEASE READ: If you like my work and want to give me a little motivation, please consider donating regularly: https://donate.sury.org/

WARNING: add-apt-repository is broken with non-UTF-8 locales, see https://github.com/oerdnj/deb.sury.org/issues/56 for workaround:

# LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php
 More info: https://launchpad.net/~ondrej/+archive/ubuntu/php
Press [ENTER] to continue or ctrl-c to cancel adding it

gpg: keyring `/tmp/tmp_p2yk8n_/secring.gpg' created
gpg: keyring `/tmp/tmp_p2yk8n_/pubring.gpg' created
gpg: requesting key E5267A6C from hkp server keyserver.ubuntu.com
gpg: /tmp/tmp_p2yk8n_/trustdb.gpg: trustdb created
gpg: key E5267A6C: public key "Launchpad PPA for Ondřej Surý" imported
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)
OK

インストール可能なパッケージの一覧を確認する。
⇒この時点ではまだphp5しかない

$ apt-cache search mod-php
libapache2-mod-php5 - server-side, HTML-embedded scripting language (Apache 2 module)

パッケージインデックスを更新する。

$ sudo apt-get update
Ign http://downloads-distro.mongodb.org dist InRelease
Get:1 http://security.ubuntu.com trusty-security InRelease [65.9 kB]           
Hit http://ppa.launchpad.net trusty InRelease                                  

≪省略≫

Get:54 http://asia-east1.gce.clouds.archive.ubuntu.com trusty/restricted i386 Packages [16.4 kB]
Get:55 http://asia-east1.gce.clouds.archive.ubuntu.com trusty/universe i386 Packages [7597 kB]
Get:56 http://asia-east1.gce.clouds.archive.ubuntu.com trusty/multiverse i386 Packages [172 kB]
Fetched 35.1 MB in 16s (2188 kB/s)                                             
Reading package lists... Done
W: Size of file /var/lib/apt/lists/toolbelt.heroku.com_ubuntu_._Packages.gz is not what the server reported 719 725

インストール可能なパッケージの一覧を確認する。
⇒php5.5、php5.6、php7.0、php7.1が追加された

$ apt-cache search mod-php
libapache2-mod-php5 - server-side, HTML-embedded scripting language (Apache 2 module)
libapache2-mod-php5filter - server-side, HTML-embedded scripting language (apache 2 filter module)
libapache2-mod-php5.5 - server-side, HTML-embedded scripting language (Apache 2 module)
libapache2-mod-php7.0 - server-side, HTML-embedded scripting language (Apache 2 module)
libapache2-mod-php - server-side, HTML-embedded scripting language (Apache 2 module) (default)
libapache2-mod-php5.6 - server-side, HTML-embedded scripting language (Apache 2 module)
libapache2-mod-php7.1 - server-side, HTML-embedded scripting language (Apache 2 module)

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2016/12/11 10:08

    実行しているコマンドが何をやるものか考えれば分かると思って上のコメント書いたのですが。
    sudo apt-get update 実行していないだけでしょう・・・。

    キャンセル

  • 2016/12/11 11:20

    上2つのコマンドも実行しています。

    キャンセル

  • 2016/12/11 11:33

    インストールできました。
    ENTER を実行していなかったのが原因だったみたいです。たくさんの解答有難うございました。

    キャンセル

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

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

関連した質問

同じタグがついた質問を見る