未定

大学4回生です。調べた事をまとめたり、日記も書くかもしれません。

cloud9上でのcakePHP3.4の環境構築

どうもダンテです。
今回はブログを始めようと思うきっかけになった
icloud 9上でのCakePHP3.4の環境構築」
について色々詰まってしまったのでまとめておきたいと思います。

まず、CakePHP3をしようとしたのは新しく始めたバイトで必要になったからです。
そこでドットインストールのCakePHP3入門の通りにしようとしたのですが、
こちらではローカル開発環境を使っていて、cloud9は使ってませんでした。
そこで他のサイトを検索して、下記のサイトを参考にさせていただきました。
(ブログの作法とかよくわかってないんですけど、URLはっつけちゃっていいんですかね。)

Cloud9でCakePHP3【その1】 | トライスターソリューションズ

Cloud9でCakePHP3【その2】 | トライスターソリューションズ


でも、今最新のCakePHPは多分3.4なんで、このサイトの通りではダメでした。

まず、
intl拡張が入ってなかったので、下記のサイトを参考にphp7.0.11とかそこらへん周辺を入れました。

Cloud9 で PHP 7 コピペ用 - Qiita

コードは下記の通りにしました。

sudo apt-get update
sudo apt-get install libmcrypt-dev
sudo apt-get install php-mcrypt
sudo apt-get install php-curl
curl -L -O https://github.com/phpbrew/phpbrew/raw/master/phpbrew
chmod +x phpbrew
sudo mv phpbrew /usr/local/bin/
phpbrew init
[[ -e ~/.phpbrew/bashrc ]] && source ~/.phpbrew/bashrc
phpbrew lookup-prefix ubuntu
phpbrew install 7.0.11 +default +mysql +pdo +fpm +opcache +intl
phpbrew switch php-7.0.11
phpbrew use php-7.0.11
php -v

そのあと

php -i|grep intl

をすれば、無事intlが入ってました。

そして【その2】のCakePHPのインストールをしてブラウザから確認をしようとしたのですが、、
これがうまくいきませんでした。

アクセスしようとすると、

Parse error: syntax error, unexpected '.', expecting '&' or variable(T_VARIABLE) in ~~functions.app

と出てきました。

理由はよくわからないんですけど(ちゃんと勉強しないとですね)
エラーの通り,$argsの前の ... を消してみたらエラーは消えました。
これでうまく行けばよかったのですが、
今度は違うエラーが出ました。


これやっちゃダメでした。
CakePHP7が認識されていなかったってわかった時に若干大丈夫なのかな
って思ってたんですけどやっぱダメでしたね。
MVCを作ってブラウザからアクセスしようとしたらエラー吐かれました。
消した...を元に戻しました。
(全部戻せたのかわからないんだけど大丈夫なのかな。。)

細かいエラーメッセージは忘れましたが、
bootstrap.php

version_compare(PHP_VERSION, '5.6.0') < 0

がエラーを吐いてました。
phpが5.5.9だよ
って内容ですね。

しかし、上でやったようにphp 7.0.11は入れたし、

php -v

を実行してもちゃんとphp 7.0.11になってたんですね。
ここで詰まって、ダウンロードの仕方とかコマンドの設定がおかしかったのかな、、、
と思い、色々調べたり試行錯誤しました。
様々なサイトをみても「これだ!」というのは見つけられませんでした。

そこで試しに適当なphpファイルを作って

<?php
echo PHP_VERSION;
?>

をしてみるとやっぱりphpは5.9.9。

これはちゃんとphp 7を認識してくれていないのかなと思い、たどり着いたのが下のサイト
How to upgrade a PHP workspace to version 7? - Cloud9 Support - Cloud9 Community

英語のサイトですね。大学入ってから何もしてないので読むのが辛いですね。
ここのanswer通りに

sudo add-apt-repository ppa:ondrej/php -y
sudo apt-get update -y

sudo apt-get install php7.0-curl php7.0-cli php7.0-dev php7.0-gd php7.0-intl php7.0-mcrypt php7.0-json php7.0-mysql php7.0-opcache php7.0-bcmath php7.0-mbstring php7.0-soap php7.0-xml php7.0-zip -y

sudo mv /etc/apache2/envvars /etc/apache2/envvars.bak
sudo apt-get remove libapache2-mod-php5 -y
sudo apt-get install libapache2-mod-php7.0 -y
sudo cp /etc/apache2/envvars.bak /etc/apache2/envvars

を実行して、もう一度ブラウザからアクセスしてみると、、

今度はうまくいきました。

どうやら、installするだけじゃなく、apacheに指定してあげないとダメみたいですね。

エラーに書いてる事を素直に受け止めて、php7がちゃんと指定されていないことに気づけば一瞬で解決できたことですね。。。
エラーはちゃんと対処しないとダメですね。
プログラミングは気づかなくて沼にハマると本当に抜け出せなくて辛いですね( ;∀;)
もっと頑張ろう。。