即使在Web服务器上启用了PDO,它也会失败

时间:2019-01-14 05:26:56

标签: php apache pdo

我搬到了新硬盘,并据我所知复制了所有必要的东西。我尝试加载任何需要我的PDO数据库对象的页面,并且该页面崩溃。

这是错误:

  

致命错误:未捕获的错误:在/var/www/the_website.net/config/DB.php中找不到类“ PDO”:20堆栈跟踪:
  #0 /var/www/the_website.net/public_html/index.php(16):DB-> __ construct()
  #1 {main}在第20行的/var/www/the_website.net/config/DB.php中抛出

这是DB.php中有问题的行(以及周围的几行):

public function __construct($username='username', $password='supersecretpassword', $host='localhost', $dbname='database', $options=[])
{
    $this->isConnected = true;
    try {
        $this->db_data = new PDO("mysql:host={$host};dbname={$dbname};charset=utf8",$username, $password, $options);
        $this->db_data->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $this->db_data->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
    } catch (PDOException $e) {
        throw new Exception($e->getMessage());
    }
}

这只是对象的创建。

这是我在/etc/php/7.2/apache2/php.ini中启用的模块(我只是做了所有操作,因为无论如何都无法正常工作):

extension=openssl
extension=pdo_firebird
extension=pdo.so
extension=pdo_mysql
extension=pdo_oci
extension=pdo_odbc
extension=pdo_pgsql
extension=pdo_sqlite

这是php -m的结果

root@HAL4:/etc/php/7.2/apache2# php -m
[PHP Modules]
calendar
Core
ctype
date
exif
fileinfo
filter
ftp
gettext
hash
iconv
json
libxml
mysqli
mysqlnd
openssl
pcntl
pcre
PDO <-- Still doesn't work
pdo_mysql <-- Nope. Still not working.
Phar
posix
readline
Reflection
session
shmop
sockets
sodium
SPL
standard
sysvmsg
sysvsem
sysvshm
tokenizer
Zend OPcache
zlib

[Zend Modules]
Zend OPcache

我为两个模块都运行了phpenmod。

我以前的硬盘驱动器正在运行php 7.0。现在,我正在运行php 7.2。

在测试页中运行<?php phpinfo(); ?>会告诉我:

Configuration File (php.ini) Path   /etc/php/7.0/apache2
Loaded Configuration File   (none)
Scan this dir for additional .ini files /etc/php/7.0/apache2/conf.d
Additional .ini files parsed    (none)

更新 我从/ usr / lib / apache2 /完全删除了php7.0模块,所以现在所有内容都是php7.2。我的phpinfo()文件显示正确的路径:

Configuration File (php.ini) Path   /etc/php/7.2/apache2
Loaded Configuration File   /etc/php/7.2/apache2/php.ini
Scan this dir for additional .ini files /etc/php/7.2/apache2/conf.d

但是仍然出现Class'PDO' not found错误。

我还能检查什么?为什么不加载?

1 个答案:

答案 0 :(得分:0)

我清除了PHP,然后重新开始。我做了与以前完全相同的事情,并遵循了错误。我一直遇到同样的致命错误,直到我这样做:

apt install php7.2-mysql

我的问题已解决。