Я работаю над сайтом, который должен взаимодействовать с базой данных SQLite. Это мой первый проект, использующий PHP, и я сталкиваюсь с некоторыми проблемами. Пока у меня есть:
config. php:
...
$connection = new SQLiteConnection();
$connection->connect();
И в SQLiteConnection , $connection->connect()
делает в значительной степени следующее:
try {
$rootDir = $_SERVER["DOCUMENT_ROOT"];
$this->pdo = new PDO("sqlite:".$rootDir.self::DATABASE_PATH);
$this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo "Exception: '".$e->getMessage()."' at line ".$e->getLine();
}
Однако каждый раз, когда я запускаю config.php
, я получаю следующую ошибку:
Исключение: «не удалось найти драйвер» в строке 22 * 1018 *
Это строка, где я инициализирую PDO
.
Я испробовал множество решений:
- Очистка и переустановка
php-common
, php-sqlite3
, и другие - Раскомментирование этих строк в моем файле
php.ini
(в /etc/php/7.2/cli):
extension=pdo_sqlite
extension=sqlite3
- Раскомментирование и установка каталога расширений в том же
php.ini
файле:
sqlite3.extension_dir = "ext"
- Перезапуск службы apache2 (
sudo service apache2 restart
)
При запуске php -m
я получаю модули в списке, но с предупреждением:
$ php -m
PHP Warning: PHP Startup: Unable to load dynamic library 'pdo_sqlite' (tried: /usr/lib/php/20170718/pdo_sqlite (/usr/lib/php/20170718/pdo_sqlite: cannot open shared object file: No such file or directory), /usr/lib/php/20170718/pdo_sqlite.so (/usr/lib/php/20170718/pdo_sqlite.so: undefined symbol: php_pdo_unregister_driver)) in Unknown on line 0
PHP Warning: Module 'sqlite3' already loaded in Unknown on line 0
[PHP Modules]
...
PDO
pdo_sqlite
...
sqlite3
...
Но когда я просматриваю содержимое каталога, эти файлы, кажется, присутствуют:
$ ls -al /usr/lib/php/20170718
total 6372
drwxr-xr-x 2 root root 4096 Mar 1 11:40 .
drwxr-xr-x 4 root root 4096 Mar 1 11:38 ..
...
-rw-r--r-- 1 root root 113048 Feb 11 15:55 pdo.so
-rw-r--r-- 1 root root 31096 Feb 11 15:55 pdo_sqlite.so
...
-rw-r--r-- 1 root root 52648 Feb 11 15:55 sqlite3.so
...
Когда я смотрю в его родительский каталог, я вижу:
$ ls -al /usr/lib/php/
total 40
drwxr-xr-x 4 root root 4096 Mar 1 11:38 .
drwxr-xr-x 144 root root 4096 Mar 1 11:38 ..
drwxr-xr-x 2 root root 4096 Mar 1 11:40 20170718
drwxr-xr-x 3 root root 4096 Mar 1 11:38 7.2
-rw-r--r-- 1 root root 4845 Jan 17 2018 php-helper
-rw-r--r-- 1 root root 9534 Jan 17 2018 php-maintscript-helper
-rwxr-xr-x 1 root root 2922 Jan 17 2018 sessionclean
* 1 057 * Может ли быть проблема из-за присутствия
20170718
и
7.2
(я не совсем уверен в разнице)? В каталоге
7.2
нет файлов
.so
.