我搬到了新硬盘,并据我所知复制了所有必要的东西。我尝试加载任何需要我的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
错误。
我还能检查什么?为什么不加载?
答案 0 :(得分:0)
我清除了PHP,然后重新开始。我做了与以前完全相同的事情,并遵循了错误。我一直遇到同样的致命错误,直到我这样做:
apt install php7.2-mysql
我的问题已解决。