2016-05-30 14 views
9

私はタグでベースとしてphp docker containerを使用しています:php dockerイメージにpdo driverをインストールするには?

php:5.6-apache 

私はホストmysqlに達することができる基本的なmysql:5.6画像でそれをリンクさ。私はDBを作成し、基本的な値を持つテーブルを埋めました。

はまだ私のアプリにアクセスしようと、私が手に:私もMySQLを追加

apt-get install php5-mysql 

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コンポーネントを欠いていたと思いました.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の拡張も活性化されていないようです。

私は間違っていますか?

+0

は、[同様の質問](http://stackoverflow.com/questions/2852748/pdoexception-could-not-find-driver)を調査それはそうモジュールがロードされていないことを確認します。 – k0pernikus

答えて

16

PHPの公式リポジトリは、あなたがPDOを実行するために必要な拡張機能をインストールするのを忘れhttps://github.com/docker-library/php/tree/master/5.6

docker-php-ext-installというスクリプトがあります。

てみてくださいこのようなドッキングウィンドウの画像を作成して実行します。

FROM php:5.6-apache 

# PHP extensions 

RUN docker-php-ext-install pdo pdo_mysql pdo_pgsql 
+0

MySQLのみを使用している場合は、PostgreSQLの 'pdo_pgsql'拡張を削除することができます。これには、インストールの追加要件があります。 – mikkohei13

関連する問題