繁体   English   中英

PHP 致命错误:找不到类 PDO (mysql/Docker)

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

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

致命错误:未捕获错误:在 /home/vcap/app/htdocs/db.php:18 中找不到类“PDO”:堆栈跟踪:#0 {main} 抛出在 /home/vcap/app/htdocs/db.php on第 18 行

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

数据库.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'

Dockerfile:

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"]
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM