自分用Memo：DockerにcakePHPをインストールしてみる

初投稿。メモ用。
読むに耐えない文章力。

# 前回のあらすじ（前回なんて無い）（うろおぼえ）
　CakePHPを教材として、PHPのお勉強をしようと思った。
　ちなみに、OSはmacOS。
　macの場合、LAMPの構築にXAMPPというの使うらしいけど、phpコマンドが上手くいかなかった。
　php-intlが読み込まれてないから、ダメらしい。
　ネットで調べたら、php.iniのphp-intlの書かれた行がコメントアウトされてるので、外すといいらしい的なことが書かれてたので、そのとおりにしたけど、意味なし。（長い）
　mac本体に入ってるphp.iniファイルじゃなくて、XAMPPのほうのphp.iniかもしれなかったけど、見つからなかった。どこそれ？
　brewでインストールしてもダメだった。
　というわけで、最近気になるDockerとやらを使ってみることにした。
　よろしく、Docker。



# ベースイメージ
 php/7.2.3-apache使ってみた。

# 参考文献
- [apache http server project](http://httpd.apache.org/)

# (--思い出したら書く--)

# とりあえずcomposerでcakePHPをインストールしてみた
```
mkdir php-study
composer create-project --prefer-dist cakephp/app php-study
```
けど、ダメ。
出力を読むに、git入ってないからだめってことかな？

```
Installing cakephp/app (3.5.1)
    Failed to download cakephp/app from dist: The zip extension and unzip command are both missing, skipping.
The php.ini used by your command-line PHP is: /usr/local/etc/php/conf.d/docker-php-ext-sodium.ini
    Now trying to download from source
  - Installing cakephp/app (3.5.1): Cloning 84ec633f31

                    
  [RuntimeException]                                                                     
  Failed to clone https://github.com/cakephp/app.git, git was not found, check that it   
  is installed and in your PATH env.                                                     
                                                                                         
  sh: 1: git: not found                                                                  
```

# gitをインストールしてからもう一回cakePHPインストール
```
apt-get install git
```
そして、もう一回composer。↓


```
Installing cakephp/app (3.5.1)
    Failed to download cakephp/app from dist: The zip extension and unzip command are both missing, skipping.
The php.ini used by your command-line PHP is: /usr/local/etc/php/conf.d/docker-php-ext-sodium.ini
    Now trying to download from source
  - Installing cakephp/app (3.5.1): Cloning 84ec633f31 from cache
Created project in php-study
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - cakephp/cakephp 3.5.9 requires ext-intl * -> the requested PHP extension intl is missing from your system.
    - cakephp/cakephp 3.5.8 requires ext-intl * -> the requested PHP extension intl is missing from your system.
    - cakephp/cakephp 3.5.7 requires ext-intl * -> the requested PHP extension intl is missing from your system.
    - cakephp/cakephp 3.5.6 requires ext-intl * -> the requested PHP extension intl is missing from your system.
    - cakephp/cakephp 3.5.5 requires ext-intl * -> the requested PHP extension intl is missing from your system.
    - cakephp/cakephp 3.5.4 requires ext-intl * -> the requested PHP extension intl is missing from your system.
    - cakephp/cakephp 3.5.3 requires ext-intl * -> the requested PHP extension intl is missing from your system.
    - cakephp/cakephp 3.5.2 requires ext-intl * -> the requested PHP extension intl is missing from your system.
    - cakephp/cakephp 3.5.14 requires ext-intl * -> the requested PHP extension intl is missing from your system.
    - cakephp/cakephp 3.5.13 requires ext-intl * -> the requested PHP extension intl is missing from your system.
    - cakephp/cakephp 3.5.12 requires ext-intl * -> the requested PHP extension intl is missing from your system.
    - cakephp/cakephp 3.5.11 requires ext-intl * -> the requested PHP extension intl is missing from your system.
    - cakephp/cakephp 3.5.10 requires ext-intl * -> the requested PHP extension intl is missing from your system.
    - cakephp/cakephp 3.5.1 requires ext-intl * -> the requested PHP extension intl is missing from your system.
    - cakephp/cakephp 3.5.0 requires ext-intl * -> the requested PHP extension intl is missing from your system.
    - Installation request for cakephp/cakephp 3.5.* -> satisfiable by cakephp/cakephp[3.5.0, 3.5.1, 3.5.10, 3.5.11, 3.5.12, 3.5.13, 3.5.14, 3.5.2, 3.5.3, 3.5.4, 3.5.5, 3.5.6, 3.5.7, 3.5.8, 3.5.9].

  To enable extensions, verify that they are enabled in your .ini files:
    - 
    - /usr/local/etc/php/conf.d/docker-php-ext-sodium.ini
  You can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode.

```
intl地獄と名付けたい。

# php-intlの導入
　ネットでぱちぱち調べた結果、まずlibicu-devを追加してからintlをインストールするらしい。

libicu-devをインストール

```
apt-get install -y libicu-dev
```

そして、intlをインストール

```
docker-php-ext-install intl
```

長々とテキストが流れた跡、最後に気になるテキストが。
覚えておくために、コピペ。

```
creating intl.la
(cd .libs && rm -f intl.la && ln -s ../intl.la intl.la)
/bin/bash /usr/src/php/ext/intl/libtool --mode=install cp ./intl.la /usr/src/php/ext/intl/modules
cp ./.libs/intl.so /usr/src/php/ext/intl/modules/intl.so
cp ./.libs/intl.lai /usr/src/php/ext/intl/modules/intl.la
PATH="$PATH:/sbin" ldconfig -n /usr/src/php/ext/intl/modules
----------------------------------------------------------------------
Libraries have been installed in:
   /usr/src/php/ext/intl/modules

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the `LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the `LD_RUN_PATH' environment variable
     during linking
   - use the `-Wl,--rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to `/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------

Build complete.
Don't forget to run 'make test'.

Installing shared extensions:     /usr/local/lib/php/extensions/no-debug-non-zts-20170718/
find . -name \*.gcno -o -name \*.gcda | xargs rm -f
find . -name \*.lo -o -name \*.o | xargs rm -f
find . -name \*.la -o -name \*.a | xargs rm -f
find . -name \*.so | xargs rm -f
find . -name .libs -a -type d|xargs rm -rf
rm -f libphp.la       modules/* libs/*

```

# よくわからなかったから、またインストール

こういう姿勢って絶対プログラマとして認められないよなー、とか思いながらcomposerでかけPHPのインストール。

ちなみに、phpのconf.dディレクトリを見たら、docker-php-ext-intl.iniが追加されてた。
php.iniとか作らなくても、大丈夫らしい。

```
mkdir php-study && composer create-project --prefer-dist cakephp/app php-study
```

こんなのが大量に出てきたけど、成功したっぽい？
zipやunzipが無かったから、ソースコードを直接ダウンロードしたって理解であってるかな？


```
  - Installing symfony/var-dumper (v4.0.8): Cloning e1b4d00810 from cache
    Failed to download psy/psysh from dist: The zip extension and unzip command are both missing, skipping.
Your command-line PHP is using multiple ini files. Run `php --ini` to show them.
    Now trying to download from source
```


とりあえず、ここで一旦終了。

# 追記 (4/18)

データベース入ってなかった。終了じゃなかった。

# データベースのインストール

なんかいろいろやってたらできた。
たぶんmysql-serverとmysql-clientをインストールすれば良いっぽい？

```bash
apt-get install mysql-server mysql-client
```

あと、mysqlndのphp.iniを追加するといいかも。

```baxh
docker-php-ext-install pdo_mysql
```

今度こそ成功？