当前位置: 首页 > 面试题库 >

如何在php docker映像中安装pdo驱动程序?

管峻
2023-03-14
问题内容

我使用带有标签的php docker容器作为基础:

php:5.6-apache

我将它与mysql:5.6可以在主机上找到的基本图像链接在一起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通过以下方式安装的组件:

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扩展甚至没有被激活。

我究竟做错了什么?


问题答案:

PHP的官方存储库具有一个名为https://github.com/docker-
library/php/tree/master/5.6
的脚本docker-php-ext-install

您忘记安装运行PDO所需的扩展。

尝试创建一个像这样的docker镜像:

FROM php:5.6-apache

# PHP extensions

RUN docker-php-ext-install pdo pdo_mysql pdo_pgsql


 类似资料:
  • 问题内容: 不久前,有人建议我更改代码以使用PDO,以便对查询进行参数化并安全地将HTML保存在数据库中。 好吧,这是主要问题: 我看了http://php.net/manual/en/ref.pdo-mysql.php,但我并没有真正知道应该把那个字符串放在哪里… 我正在构建的网站实际上只需要一页PDO。虽然我可能会考虑重新编写它,但要花一些时间,而且我需要页面尽快运行,因此无法完全关闭MySQ

  • 问题内容: 我想创建一个docker镜像并正确安装,因此我选择具有这些属性的基础镜像。因此,的第一行如下: 然后下一个命令是 在创建docker映像时创建了以下错误: 如何能够在此docker映像中安装? 问题答案: 如提示: 获取(13:权限被拒绝) 我相信这是由于您的基本形象: https://github.com/SeleniumHQ/docker- selenium/blob/master

  • 我已经安装了mongodb,我可以通过终端访问它。我想在OSX(约塞米蒂)中安装XAMPP的驱动程序。我下载了mongo。因此,将其保存在/Applications/XAMPP/xamppfiles/lib/php/extensions/no-debug-non-zts-20131226路径下,该路径是我的扩展名指向并写入的extension=mongo。所以在php中。这是一个文件,但没有运气。

  • 这是我第一次尝试创建Docker形象,我希望有人能帮助我。我的Dockerfile大致如下所示: 基本上,我只是为了扩展jar文件而安装Java。运行makefile时,出现以下错误: /bin/sh:1:/usr/lib/jvm/java-7-openjdk-amd64:权限被拒绝 我一直试图效仿这个例子:https://registry.hub.docker.com/u/barnybug/op

  • 我尝试将Oracle JDBC驱动程序安装到Apache Geronimo,但没有成功。我正在使用ojdbc6。罐子 我将其复制到repository文件夹,并尝试先使用Geronimo的管理控制台设置Oracle XA池,但没有成功。它抱怨OracleDataSource的ClassNotFoundException缺少驱动程序。 然后,我尝试设置一个常规的Jdbc驱动程序(oracle瘦)。我

  • 我在命令终端上输入了以下命令,以便在Macbook Pro的XAMPP上与PHP一起使用“MongoClient”: brew安装wget brew安装autoconf sudo/Applications/XAMPP/xamppfiles/bin/pecl安装mongo 添加了扩展名=mongo。php也是如此。ini/Applications/XAMPP/xamppfiles/etc 重新启动A