CentOS7にPHPをインストールしてみる

PHPのインストール

yumで普通にインストールした場合、

$ sudo yum -y install php

「5.4」がインストールされる。

$ php --version
PHP 5.4.16 (cli) (built: Apr  1 2020 04:07:17)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies

$ which php
/usr/bin/php

Remiを利用する場合

最新のバージョンをインストールする場合は、Remiのリポジトリを利用する。

remiをインストールするにはepelが必要みたいなので、 epelを入れて、remiをインストールする。

$ sudo yum -y install epel-release
$ sudo yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

デフォルトでは、epelとremi-safeが有効になっており、

$ grep 'enabled=1' /etc/yum.repos.d/*.repo
/etc/yum.repos.d/epel.repo:enabled=1
/etc/yum.repos.d/remi-safe.repo:enabled=1

個人的には、毎回enablerepoで明示的に指定したいので、 とりあえず無効化しておく。

$ sudo sed -i 's/enabled=1/enabled=0/' /etc/yum.repos.d/epel.repo
$ sudo sed -i 's/enabled=1/enabled=0/' /etc/yum.repos.d/remi-safe.repo

これで、PHPの最新バージョンをインストールすることができる。

$ sudo yum -y install --enablerepo=epel,remi,remi-php74 php

$ php --version
PHP 7.4.12 (cli) (built: Oct 27 2020 15:01:52) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies

Composerのインストール

公式(https://getcomposer.org/download/)の手順に従ってインストール。

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'c31c1e292ad7be5f49291169c0ac8f683499edddcfd4e42232982d0fd193004208a58ff6f353fde0012d35fdd72bc394') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

現在のディレクトリにcomposer.pharが作られるので、移動させる。

$ sudo mv composer.phar /usr/local/bin/composer

インストール完了。

$ composer --version
Composer version 2.0.6 2020-11-07 11:21:17

Composerでライブラリをインストール

zipを入れておかないと、composerでインストールする際に、下記のようなエラーがでるので、

Failed to download symfony/translation-contracts from dist: The zip extension and unzip command are both missing, skipping.

zipを入れておく。

$ sudo yum -y install zip unzip

ライブラリは下記のような感じでインストールできる。

$ composer require nesbot/carbon

インストールすると、下記のファイルとディレクトリが作成される。

  • composer.json
  • composer.lock
  • vendor/

composer.jsonには、インストールしたライブラリの情報が書かれ、

$ cat composer.json
{
    "require": {
        "nesbot/carbon": "^2.41"
    }
}

ライブラリ自体は、vendorの下にインストールされ、

$ ls vendor/nesbot/carbon/
bin  composer.json  contributing.md  extension.neon  LICENSE  phpmd.xml  readme.md  src

下記のような感じで利用できる。

$ vi hoge.php
<?php
require 'vendor/autoload.php';

use Carbon\Carbon;

$c = new Carbon();
echo $c . PHP_EOL;
$ php hoge.php
2020-11-09 04:39:29

新たに、requireでライブラリを追加すると、 composer.jsonに追加され、インストールされる。

$ composer require fzaninotto/faker

$ cat composer.json
{
    "require": {
        "nesbot/carbon": "^2.41",
        "fzaninotto/faker": "^1.9"
    }
}

$ ls vendor/fzaninotto/faker/
CHANGELOG.md  composer.json  LICENSE  readme.md  src

composer.jsonを自分で書いて、下記のようにinstallでインストールすることも可。
(むしろ、こっちが一般的なやり方?)

$ composer install