PHP Fatal error: Class PDO not found (mysql/Docker)

PHP Fatal error: Class PDO not found (mysql/Docker)

我正在尝试通过 PDO 创建 MySQL 数据库连接,但收到错误消息:

Fatal error: Uncaught Error: Class 'PDO' not found in /home/vcap/app/htdocs/db.php:18 Stack trace: #0 {main} thrown in /home/vcap/app/htdocs/db.php on line 18

这似乎暗示未安装 PDO,但 phpinfo 显示 mysql(i) pdo 处于活动状态。

db.php:

<?php

use PDO;

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

$db = getenv()["VCAP_SERVICES"];
$db_parsed = json_decode($db)->{'p.mysql'}[0]->credentials;
//var_dump($db_parsed);
$servername = $db_parsed->hostname;
$dbusername = $db_parsed->username;
$dbpassword = $db_parsed->password;
$dbname = $db_parsed->name;

// Create connection
$conn = new \PDO("mysql:host=$servername;dbname=$dbname", $dbusername, $dbpassword);
$conn->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);

?>

php 信息:

./configure' '--disable-static' '--enable-shared' '--enable-ftp=shared' '--enable-sockets=shared' '--enable-soap=shared' '--enable-fileinfo=shared' '--enable-bcmath' '--enable-calendar' '--enable-intl' '--with-kerberos' '--with-bz2=shared' '--with-curl=shared' '--enable-dba=shared' '--with-password-argon2=/usr/lib/x86_64-linux-gnu' '--with-cdb' '--with-gdbm' '--with-mysqli=shared' '--enable-pdo=shared' '--with-pdo-sqlite=shared,/usr' '--with-pdo-mysql=shared,mysqlnd' '--with-pdo-pgsql=shared' '--with-pgsql=shared' '--with-pspell=shared' '--with-gettext=shared' '--with-gmp=shared' '--with-imap=shared' '--with-imap-ssl=shared' '--with-ldap=shared' '--with-ldap-sasl' '--with-zlib=shared' '--with-libzip=/usr/local/lib' '--with-xsl=shared' '--with-snmp=shared' '--enable-mbstring=shared' '--enable-mbregex' '--enable-exif=shared' '--with-openssl=shared' '--enable-fpm' '--enable-pcntl=shared' '--enable-sysvsem=shared' '--enable-sysvshm=shared' '--enable-sysvmsg=shared' '--enable-shmop=shared' '--prefix=/tmp/build/391e1b0b/binary-builder/ports/x86_64-linux-gnu/php/7.3.28'

Docker 文件:

FROM composer:2.0.11 AS composer

FROM php:7.3-apache-stretch

RUN apt-get update && apt-get -y install -y libgmp-dev git && docker-php-ext-install gmp
RUN apt-get install -y libzip-dev zip && docker-php-ext-install zip
RUN docker-php-ext-install pdo pdo_mysql
RUN docker-php-ext-install mysqli && docker-php-ext-enable mysqli

COPY --from=composer /usr/bin/composer /usr/bin/composer

COPY composer.json composer.json
RUN composer install

COPY . .

RUN composer dump-autoload --no-scripts --no-dev --optimize
RUN chmod -R 755 /var/www/html/ 

当我使用 CloudFoundry 时,没有使用 Dockerfile。 我发现修复正在添加一个新文件:

.bp-config/options.json

{
    "WEBDIR": "public",
    "PHP_EXTENSIONS": ["gd", "pdo", "mysql", "pdo_mysql"]
}