PHP7触ってみた

# 概要 - この記事では何紹介すんの?? -

- Vagrant
- VirtualBox
- CentOS7
- PHP7(CUIまで。[次回](http://qiita.com/yu_eguchi/items/362d769c16f99641e3a2)にnginxとの連携 = php-fpmを取り扱います。)

遅ればせながら、PHP7を弄りたくなったので、その方法と感想を載せます。
最終的にはLaravel5と連携して、サービスをリリースさせます。
その時にはきっと以下のような組み合わせになるでしょう。
ただ今回の記事は導入までなので、上記の組み合わせまでを紹介します。

- Vagrant
- VirtualBox
- CentOS7
- PHP7
- php-fpm
- nginx
- Laravel5
- Blade
- Github
- CircleCI
- ScrutinizerCI
- heroku
- Angular
- TypeScript
- Sass
- Compass
- Grunt

## VirtualBox導入

![vb.png](https://qiita-image-store.s3.amazonaws.com/0/78857/f97a9e4c-ff44-7b94-151d-c639e6997255.png)

オラクル製仮想化ソフトウェア
[ここ](https://www.virtualbox.org/wiki/Downloads)からDLしてください。

## Vagrant導入
![vagrantimage.png](https://qiita-image-store.s3.amazonaws.com/0/78857/e66963e0-4196-3537-dccf-7836f317c5ab.png)

仮想環境を操作・管理するツールと言えばいいでしょうか。ダメでしょうか。許してください。
[ここ](https://www.vagrantup.com/downloads.html)からどーぞ。

## CentOS7(box)導入

![centos7.png](https://qiita-image-store.s3.amazonaws.com/0/78857/7a5bc1d3-3417-8231-7c28-e7b013028e6c.png)


```
vagrat box add 【CDN】
```

上記コマンドでOSのイメージをインストールします。
今回はCentOS7入れます。実は6.xまでしか触れたことがなく、噂では7にしてどハマりすると聞いていたので、どれくらいハマるか楽しみです。
<font color="red">※後述しますが、しっかりとハマりました。</font>

さっそくboxを追加します。

```
cd ~
mkdir -p vagrant/centos70
vagrant box add centos70 https://f0fff3908f081cb6461b407be80daf97f07ac418.googledrive.com/host/0BwtuV7VyVTSkUG1PM3pCeDJ4dVE/centos7.box
※しばらく時間かかります。待ちましょう。
```

ホーム下に「vagrant/centos70」ディレクトリを作成しておき、vagrantにcentos7のboxを追加しました。

追加できたら、VirtualBoxにもイメージが反映されているはずです。お手すきで確認してみましょう。

```
cd ~/vagrant/centos70/
pwd
vagrant init centos70
```

先ほど作成した作成した「vagrant/centos70/」に移動し、centos7を初期化します。
するとこんな形でtreeができあがります。

```
hoge:centos70 hoge$ tree
.
└── Vagrantfile
```

Vagrantfileという設定ファイルが作成されます。
こいつを一箇所修正します。

```
cp Vagrantfile ./Vagrantfile.org
vi Vagrantfile
```

viしたら、コマンドモードのまま

```
se nu
```

で便宜上ラインを表示させます。
<font color="red">※「se nu」は「set number」の省略コマンドです。</font>

![スクリーンショット 2015-12-12 15.41.04.png](https://qiita-image-store.s3.amazonaws.com/0/78857/5dc8c4d6-8a2c-ada6-f047-ac0609b55205.png)

上記の29行目がOriginalだとコメントアウトされたままなので、外してください。

これで準備は完了です。

```
$ pwd
~/Vagrant/centos70
```

pwdでcetos70にいることを確認したら、

```
vagrant up
```

で起動します。

立ち上がったら、

```
vagrant ssh
```

でcentOS7にログインできます。
poderoaとか使いたい人は、先ほどコメントアウトを外したIPアドレスでsshしてください。
このデフォルトでsshだけ外部接続が上記IPで許可されてます。

### おまけ

用が済んだvagrantは

```
vagrat halt
```

でシャットダウンしましょう。
今のstatus確認は

```
vagrant status
```

で確認できます。

## PHP7導入

![elephpant.png](https://qiita-image-store.s3.amazonaws.com/0/78857/e2a5006f-b525-24ee-b962-ff745b8a4b37.png)

yumにphp7のrepositoryが存在しないので、追加登録・instalします。

- 追加登録

```
sudo vi /etc/yum.repos.d/php7-nightly.repo
```

開いたら、以下をそのまま記載する

```
[zend-php7]
name = PHP7 nightly by Zend Technologies
baseurl = http://repos.zend.com/zend-server/early-access/php7/repos/centos/
gpgcheck=0
```

これで準備OK

```
sudo yum install --enablerepo=zend-php7 php7-nightly
```

無事にinstallがされれば、パスを通して完了

```
export PATH=${PATH}:/usr/local/php7/bin/:/usr/local/php7/sbin/
source /etc/profile
```

```
php -v
PHP 7.0.2-dev (cli) (built: Dec 11 2015 20:27:52) ( NTS )
Copyright (c) 1997-2015 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2015 Zend Technologies
```

ｷﾀ―――（゜∀゜）―――！！！

さっそく使ってみよう。
とりあえず、CUIで。

```
cd ~
mkdir work
cd work
vi test.php
```

以下の内容をtest.phpに記載

```
<?php
echo 1 <=> 1;
echo $hoge ?? 'nothing!';
```

:wqしたら実行してみよう。

```
php test.php
0nothing!
```

使えてるね!!
??演算子は今後のスタンダードになると思うね。
issetからの解放。

今回はここまで。PHP7の新機能を試して見る記事と、GUIでもPHP7を使う記事(nginx)は別の記事で書きます。

## CentOS7ではまったこと

- ifconfigが使えない!!?

驚きました。参考リンクにもありますが、net-tools系のコマンドは標準でインストールされなくなったと。なので

```
yum install net-tools
```

しないと使えない。
もしくは、

```
ip addr show
```
で。

- iptablesがない!!?

centos7からはfirewalldがwrapして使うみたい。
ただ、ipdtables自体は使える。今後はfirewalldが標準になるだろうから、ナレッジ積まないと。
とりあえず、まだ全然使いこなせていないので、勉強します。
iptableの時同様、httpとhttpsを許可させたいのだが、firewalldでうまくいっていないのが現状。今は

```
systemctl stop firewalld
```

してしまいました。。。まあ、localのvmだから良いだろうけど、これは逃げですね。
 

## [参考リンク]
【php7】: http://qiita.com/onishik/items/810fd840530d4fb6970c
【firewalld】: http://qiita.com/shrkw/items/8410e9cb65eb789a40e1
【ifconfig】: http://qiita.com/s_makinaga/items/ce45f3e20b8edafab9dd