web-dev-qa-db-ja.com

PHPドッカーイメージにPDOドライバーをインストールする方法は?

私はベースとして php docker container をタグとともに使用しています:

_php:5.6-Apache
_

ホストmysqlで到達できる基本的な_mysql:5.6_イメージにリンクしました。 DBを作成し、テーブルに基本的な値を入力しました。

まだ私のアプリにアクセスしようとすると、私は得る:

_Fatal error: Uncaught exception 'PDOException' with message
could not find driver' in /var/www/html/index.php:30 
Stack trace: #0 [internal function]: 
PDO->__construct('mysql:Host=mysq...', 'root', 'root', Array) 
#1 [internal function]: Phalcon\Db\Adapter\Pdo->connect(Array)
#2 /var/www/html/index.php(30): Phalcon\Db\Adapter\Pdo-__construct(Array)
#3 [internal function]: {closure}()
#4 [internal function]: Phalcon\Di\Service->resolve(NULL, Object(Phalcon\Di\FactoryDefault))
#5 [internal function]: Phalcon\Di->get('db', NULL)
#6 [internal function]: Phalcon\Di->getShared('db')
#7 [internal function]: Phalcon\Mvc\Model\Manager->_getConnection(Object(Reviews), NULL)
#8 [internal function]: Phalcon\Mvc\Model\Manager->getReadConnection(Object(Reviews))
#9 [internal function]: Phalcon\Mvc\Model->getReadConnection()
#10 [internal function]: Phalcon\Mvc\Model\MetaData\Strategy\Introspection->getMetaData(Object(Reviews), Object(Phalcon\Di\FactoryDefault))
#11 [internal function]: Phalcon\Mvc\Model\MetaData->_initialize(Object(Rev in /var/www/html/index.php on line 30
_

したがって、phpコンテナには、次の方法でインストールした_php-mysql_コンポーネントがないと思いました。

_apt-get install php5-mysql
_

また、次の場所にmysql.iniを追加しました。

_cat /usr/local/etc/php/conf.d/mysql.ini
; configuration for php MySQL module
; priority=20
extension=pdo_mysql.so
_

echo phpinfo();dieの場合、次のことがわかります。

_Additional .ini files parsed:
    /usr/local/etc/php/conf.d/mysql.ini,
    /usr/local/etc/php/conf.d/phalcon.ini
_

それでも、エラーは続きます。

さらに、実行時:

_php -i|grep PDO
_

私は得る:

_PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/lib/php/extensions/no-debug-non-zts-20131226/pdo_mysql.so' - /usr/local/lib/php/extensions/no-debug-non-zts-20131226/pdo_mysql.so: cannot open shared object file: No such file or directory in Unknown on line 0
PDO
PDO support => enabled
PDO drivers => sqlite
PDO Driver for SQLite 3.x => enabled
_

そのため、mysql拡張機能はアクティブ化されていないようです。

私は何を間違えていますか?

14
k0pernikus

PHPの公式リポジトリには_docker-php-ext-install_ https://github.com/docker-library/php/tree/master/5.6

PDOの実行に必要な拡張機能をインストールするのを忘れました。

次のようなドッカー画像を作成してみてください。

_FROM php:5.6-Apache

# PHP extensions

RUN docker-php-ext-install pdo pdo_mysql pdo_pgsql
_
23