Chapter 01

PHP 7 + phpenv 実行環境構築 躓きポイントまとめ

イスルギ
イスルギ
2020.11.08に更新

phpenvを導入して複数バージョンのPHPを管理する

Ubuntu上にPHP7 + phpenvの実行環境を構築したのですが、すんなりとは成功しなかったので、各エラーを本記事にまとめます。

本記事のゴール

  • phpenvを用いて、Ubuntu上にPHP 7の実行環境を構築

環境準備

  • Ubuntu 20.04.1 LTS
  • sudo apt updatesudo apt upgradeは実施済

始める前の注意点

最新バージョンの構築手順を確認しましょう。

  • 提供先のgithubリポジトリに手順があるので、導入手順に移る前に、まずはこちらを確認するのが良いでしょう。

手順内の追記先のファイルが変化します。

  • UbuntuをCLIではなくGUIで起動する場合、~/.bash_profileは読み込まれません。~/.bash_profileではなく~/.bashrcに追記してください。(echo '追記内容' >> 追記先ファイル名の部分)
  • CLIで起動する場合も~/.bashrcに記載して問題ないため、以下の手順は~/.bashrcにしています。

導入手順

git clone git://github.com/phpenv/phpenv.git ~/.phpenv
echo 'export PATH="$HOME/.phpenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(phpenv init -)"' >> ~/.bashrc
exec $SHELL -l
mkdir -p "$(phpenv root)"/plugins
git clone git://github.com/php-build/php-build.git ~/.phpenv/plugins/php-build
phpenv install -l (バージョン一覧を確認)
phpenv install 7.4.12(↑の中の任意のバージョン)
# インストール時にエラーが出る場合は解消して再実行
phpenv global 7.4.12

インストール時のエラー対処法

以下で紹介するエラーは、いずれもエラー内容に記載された依存ライブラリが足りないため、エラーが起きています。
開発向けライブラリが公開されていないか調査するなど、インストールすればよいパッケージを調査しましょう。

  • ***-devでapt installが成功するか
  • *** aptなどで検索してみる
  • 同じ問題に直面したユーザ記事を調査する

これより以下では、それぞれのエラーに対応する自分が必要になったパッケージ名を記載していますが、まとめて一括インストールしたい方は、以下を実行ください。

sudo apt install pkgconf libbz2-dev libcurl4-openssl-dev libpng-dev libjpeg-dev libonig-dev libtidy-dev libzip-dev autoconf

1. configure: error: The *** script could not be found or is too old.

原因:phpenvの依存パッケージである、***がインストールされていない。
対処:

sudo apt install ***(インストールパッケージ名)
依存パッケージ インストールパッケージ
pkg-config pkgconf

2. configure: error: Please reinstall the *** distribution

原因:phpenvの依存パッケージである、***のバージョンが古いまたは合っていない。
対処:↑に同じ。

依存パッケージ インストールパッケージ
BZip2 libbz2-dev

3. configure: error: Package requirements (***) were not met: Package '***', required by 'virtual:world', not found

原因:phpの依存パッケージである、***がインストールされていない。
対処:↑に同じ。

依存パッケージ インストールパッケージ
libcurl libcurl4-openssl-dev
libpng libpng-dev
libjpeg libjpeg-dev
oniguruma libonig-dev

4. configure: error: Cannot find ***

原因:phpインストール時に使用する***がインストールされていない。
対処:↑に同じ。

依存パッケージ インストールパッケージ
libtidy libtidy-dev

5. Package '***', required by 'virtual:world', not found

原因:phpインストール時に使用する***がインストールされていない。
対処:↑に同じ。

依存パッケージ インストールパッケージ
libzip libzip-dev

6. PEAR package PHP_Archive not installed: generated phar will require PHP's phar extension be enabled.

原因:xdebugインストール時に使用する、autoconfがインストールされていない。
対処:↑に同じ。

依存パッケージ インストールパッケージ
PHP_Archive autoconf