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

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

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

Cloud9は、クラウドからのプログラミングが可能になるWebサービス。IDEとしての機能が搭載されており、GitHubやHerokuなど他ツールとの連携も可能です。ブラウザ上で動くため、デバイスに関係なく開発環境を準備できます。

PHP

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

Q&A

解決済

2回答

3952閲覧

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

ryohasegawa

総合スコア437

Cloud9

Cloud9は、クラウドからのプログラミングが可能になるWebサービス。IDEとしての機能が搭載されており、GitHubやHerokuなど他ツールとの連携も可能です。ブラウザ上で動くため、デバイスに関係なく開発環境を準備できます。

PHP

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

0グッド

1クリップ

投稿2016/12/08 13:07

編集2016/12/08 14:29

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

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

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

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

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

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

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

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

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

toutou

2016/12/08 13:17

毎回言われると思いますが,エラーはどんな内容に捉えましたか?それをみて何をしましたか?
ryohasegawa

2016/12/08 13:20

書きましたよ 2行目の{が不要
toutou

2016/12/08 13:26

で,何をしたの?
ryohasegawa

2016/12/08 13:29

サンプルコードと見比べたのですが、同じでした。
toutou

2016/12/08 13:40

{を増やしたり減らしたり,一つ一つの意味を考えておかしな部分があったりしませんでしたか?
ryohasegawa

2016/12/08 13:53

特になかったんです。今から追記するんですが、Macの開発環境でlocalhostで起動してみると、上手く実行されました。プログラム上の欠陥ではなさそうです。Cloud9側の設定の問題でしょうか?
退会済みユーザー

退会済みユーザー

2016/12/08 13:59 編集

関数の戻り値の型宣言のための「:」のせいでパースエラーになっているように見えます。PHPのバージョンが7以上になっていないのでは?
ryohasegawa

2016/12/08 14:02

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

退会済みユーザー

2016/12/08 23:46

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

回答2

0

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

php

1function funcName() : type { 2}

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

php

1echo phpversion();

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

投稿2016/12/08 14:04

編集2016/12/08 14:05
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

ryohasegawa

2016/12/10 08:26

この方法も一つとして、参考にさせてもらいます。 でも、実行環境をphp7にする方法を探しているので、よければ回答お願いします。
退会済みユーザー

退会済みユーザー

2016/12/10 09:05

tkmtmkt さんが回答してくれているんですから、その通りやって見てください。
ryohasegawa

2016/12/10 11:28

やり方が悪いのかもしれませんが、うまくできないんです・・・
退会済みユーザー

退会済みユーザー

2016/12/10 11:36

漠然と「うまくいかない」と言われても困ります。「どのようにうまくいかない」のかを説明し、現在の状況を伝えてください。
ryohasegawa

2016/12/10 11:54

sudo apt-get install libapache2-mod-php7.1と実行すると ryohasegawa:~/workspace $ sudo apt-get install libapache2-mod-php7.1 Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to locate package libapache2-mod-php7.1 E: Couldn't find any package by regex 'libapache2-mod-php7.1' と表示されてしまって先に進めない現状です。
退会済みユーザー

退会済みユーザー

2016/12/10 12:03

「Unable to locate package libapache2-mod-php7.1」で検索すると、対策は見つかりますよ。エラーメッセージで検索はして見ましたか?
ryohasegawa

2016/12/10 12:10

始めてエラーがでた時に検索したんですが、日本語のサイトが見つからなくて・・
退会済みユーザー

退会済みユーザー

2016/12/10 12:13

確かに日本語サイトは検索にヒットhしないようですが、英語だからと行って読もうともしないのであれば、プログラミングはできないですよ。 例えばここ http://askubuntu.com/questions/715944/unable-to-locate-package-php7-0 何が書いてあるか全ての内容がわからなくたって、どこがコマンド部分なのかくらい読み取れませんか?
ryohasegawa

2016/12/10 12:16

頑張ってみます。
ryohasegawa

2016/12/10 12:23

翻訳して sudo apt-add-repository ppa:ondrej/php sudo apt-get update sudo apt-get install php7.0 をやってみたのですが、回答と同じエラーメッセージがでます。
退会済みユーザー

退会済みユーザー

2016/12/10 12:26

同じわけありません。 sudo apt-add-repository ppa:ondrej/php と sudo apt-get update の結果も出るはずです。
ryohasegawa

2016/12/10 12:35

実行した結果が以下です ryohasegawa:~/workspace $ sudo apt-add-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 sudo apt-get update gpg: keyring `/tmp/tmpzzy16pod/secring.gpg' created gpg: keyring `/tmp/tmpzzy16pod/pubring.gpg' created gpg: requesting key E5267A6C from hkp server keyserver.ubuntu.com gpg: /tmp/tmpzzy16pod/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 ryohasegawa:~/workspace $ sudo apt-get install php7.0 Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to locate package php7.0 E: Couldn't find any package by regex 'php7.0'
退会済みユーザー

退会済みユーザー

2016/12/10 12:40

書いてあるコマンドちゃんと意味をわかってやってますか? あなたはそもそも、libapache2-mod-php7.1 をインストールしたいんじゃないのですか?
ryohasegawa

2016/12/10 12:48

libapache2-mod-php7.1とlibapache2-mod-php7.0をインストールしたいです
退会済みユーザー

退会済みユーザー

2016/12/10 12:52

やりたいことの内容に聞いたことのない新事実がいきなり出て来たんですが… PHPのバージョン7.0.13に合わせて libapache2-mod-php7.0 をインストールするだけじゃなくて、libapache2-mod-php7.1をインストールする意味はあるんですか?
ryohasegawa

2016/12/10 13:01

Kosuke_Shibuyaさんの回答で2つインストールされてるんで、インストール必要かと
退会済みユーザー

退会済みユーザー

2016/12/10 13:03

2つというのはどれとどれのことですか?
ryohasegawa

2016/12/10 13:09

7.0と7.1です。
退会済みユーザー

退会済みユーザー

2016/12/10 13:12

まず、あなたの認識として、今何をすべきなのか、それがわかっているのかどうかを確認したいので、箇条書きで書いてください。
ryohasegawa

2016/12/10 13:27

やりたいこと => Cloud9でPHP7の実行を可能にしたい。 するべき事 ・PHP7.0のインストール ・PHP7.1のインストール?     $ sudo add-apt-repository ppa:ondrej/php     $ sudo apt-get update     $ sudo apt-get install libapache2-mod-php7.1     でインストールしようとするとエラーになる原因を解決
tkmtmkt

2016/12/10 13:28

確認のためにPHPインストールしたら最新版が7.1だったのと、ryohasegawaの環境が7.0のようなのでそれでも問題ないことを確認しただけなんですがねえ・・・。
ryohasegawa

2016/12/10 13:34

自分の環境では、7.0で十分なんですが、最新版の7.1の方がいいですかね?
退会済みユーザー

退会済みユーザー

2016/12/10 13:35 編集

> tkmtmkt さん tkmtmktさんの回答の意図もそういうことですよね。 > ryohasegawa さん まずあなたがどうしたいのかが第一に必要です。 現在の安定版はPHP7.1 です。これは別に7.0 であっても構いません。 このバージョンに合わせて、libapache2-mod-phpをインストールすれば良いことです。 サイトに書かれていたからといってそのままナントカの一つ覚えのようにやうことはなくて、自分のやりたいことに合わせて読み替える必要があります。 これを踏まえて、何をすれば良いのかを、決めましょう。
ryohasegawa

2016/12/10 13:58

それでは、安定版のPHP7.1をインストールします。 7.1をこれから使う可能性もあるので。
退会済みユーザー

退会済みユーザー

2016/12/10 14:17

では、さきほど sudo add-apt-repository ppa:ondrej/php コマンドを実行しました。その結果をあなたはどう認識していますか?成功したと考えてますかそれとも失敗したと考えていますか。 同様に、sudo apt-get update もコマンドを実行しました。その結果をあなたはどう認識していますか?成功したと考えてますかそれとも失敗したと考えていますか。
ryohasegawa

2016/12/11 02:33

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

退会済みユーザー

2016/12/11 02:41

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

2016/12/11 13:42

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

0

ベストアンサー

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

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

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

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

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

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

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

【追記】

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

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

sh

1$ dpkg -l | grep php

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

sh

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

apacheのPHP設定変更

sh

1$ sudo a2dismod php5 2$ sudo a2enmod php7.1

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

php

1<html><body> 2<?php 3// A simple web site in Cloud9 that runs through Apache 4// Press the 'Run' button on the top to start the web server, 5// then click the URL that is emitted to the Output tab of the console 6 7echo 'Hello world from Cloud9!'; 8 9phpinfo(); 10 11?> 12</body> 13</html>

バージョン確認

イメージ説明

【追記2】

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

sh

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

apache設定変更

イメージ説明

バージョン確認

イメージ説明

【追記3】

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

sh

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

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

sh

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

【追記4】

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

sh

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

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

sh

1$ 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しかない

sh

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

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

sh

1$ 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が追加された

sh

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/08 14:09

編集2016/12/11 01:51
tkmtmkt

総合スコア1800

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

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

ryohasegawa

2016/12/08 14:19

そうなんですよね なので、タグを追加させてもらいました。
ryohasegawa

2016/12/09 08:22

コマンドを実行したら、PHPそのものが動かなくなりました。動かないとは、プログラムが表示しないということです。 <?php function checkStatic(): int { static $x = 0; return ++$x; } print checkStatic(); print checkStatic(); print $x; ?> このまま表示されます。
tkmtmkt

2016/12/09 11:58

試したのが最新のPHP7.1だったのでsudo a2enmod php7.1とやっていますが、ここはご自分の環境に合わせて読み替えてください。 たぶん sudo a2enmod php7.0 でよいと思います。
ryohasegawa

2016/12/09 12:09

ERROR: Module php7.0 does not exist! 存在しないって帰って来ます
tkmtmkt

2016/12/09 12:49

as2nmod コマンドは /etc/apache2/mods-available にあるファイルのシンボリックリンクを /etc/apache2/mods-enabled に作成しているだけです。 ls /etc/apache2/mods-available/php* で指定できるファイルを確認してください。
ryohasegawa

2016/12/09 13:17

/etc/apache2/mods-available/php5.conf /etc/apache2/mods-available/php5.load が見つかりました。
tkmtmkt

2016/12/09 13:23

libapache2-mod-php7.1 をインストールしていないのではないかと。
ryohasegawa

2016/12/09 14:31

ryohasegawa:~/workspace $ sudo apt-get install libapache2-mod-php7.1 Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to locate package libapache2-mod-php7.1 E: Couldn't find any package by regex 'libapache2-mod-php7.1' これであってますか?あってたら、インストールされないですね
ryohasegawa

2016/12/10 12:07 編集

dpkg -l | grep mod-phpを実行すると、ii libapache2-mod-php5しか表示しません。 sudo apt-get install libapache2-mod-php7.0を実行しても、 Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to locate package libapache2-mod-php7.0 E: Couldn't find any package by regex 'libapache2-mod-php7.0' と返ってくる一方です。 なにかが抜けているんでしょうか? 追記 sudo apt-get install libapache2-mod-php7.1 も7インストール時と同じエラーになります。
ryohasegawa

2016/12/10 12:50

tkmtmktさんは、 $ sudo add-apt-repository ppa:ondrej/php $ sudo apt-get update $ sudo apt-get install libapache2-mod-php7.1 のコマンドでphp7.1をインストールされたんですか?
tkmtmkt

2016/12/10 13:19

$ sudo add-apt-repository ppa:ondrej/php ⇒リポジトリの登録 $ sudo apt-get update ⇒リポジトリの更新 $ sudo apt-get install libapache2-mod-php7.1 ⇒libapache2-mod-php7.1パッケージインストール となります。
ryohasegawa

2016/12/10 13:56

自分の環境でsudo apt-get install libapache2-mod-php7.1がうまく使えなくて
tkmtmkt

2016/12/11 01:08

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

2016/12/11 02:20

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

2016/12/11 02:33

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問