Pocket

CentOS 7 + PHP7.2 + Laravel 5.8で、Class 'PDO' not foundエラー になりました。

php-pdoをインストールしていたけど、とDockerFileを調べると、原因は、php72-php と php-pdoを混在してインストールしていました。

CentOS 7にPHP7.2をインストールする方法は、2つあります。

リポジトリパッケージ名設定ファイル
remi-php72php
php-*
/etc/php.ini
remiphp72-php
php72-php-*
/etc/opt/remi/php72/php.ini

まず、remiリポジトリをインストールします。

$ yum install -y http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
$ yum install -y epel-release
$ yum -y update
$ yum clean all
$ yum install -y httpd

方法1:remi-php72から、php-*をインストール

yum install -y --enablerepo=remi-php72  \
    php             \
    php-common      \
    php-cli         \
    php-mbstring    \
〜省略〜
    php-pdo         \
    php-mysqlnd     \
    php-pecl-mysql
 

設定ファイルは、/etc/php.ini、/etc/php.d/* です。

/etc/php.ini
/etc/php-zts.d/*
/etc/php.d/*

方法2:remiから、php72-php-*をインストール

yum install -y --enablerepo=remi  \
    php72-php             \
    php72-php-common      \
    php72-php-cli         \
    php72-php-mbstring    \
〜省略〜
    php72-php-pdo         \
    php72-php-mysqlnd     \
    php72-php-pecl-mysql

設定ファイルは、/etc/opt/remi/php72/php.ini、/etc/opt/remi/php72/php.d/* です。

/etc/opt/remi
`-- php72
    |-- X11
    |-- opt
    |-- php.d
    |-- php.ini
    |-- pki
    |-- pm
    |-- skel
    |-- sysconfig
    |-- xdg
    `-- xinetd.d

NG例:php72-php、php-pdoの混在インストール

php72-php、php-pdoを混在してインストールすると、Class 'PDO' not found になりました。

yum install -y --enablerepo=remi,remi-php72  \
    php72-php             \
    php72-php-common      \
    php72-php-cli         \
    php-mbstring          \
〜省略〜
    php-pdo               \
    php-mysqlnd           \
    php-pecl-mysql

設定ファイルは、/etc/opt/remi/php72/*、/etc/php.d/*、の2箇所にできていました。

/etc/opt/remi/php72/*
/etc/php.d/*