Call to undefined function sqlite3_open

Metal Messiah
На сайте с 01.08.2010
Offline
152
2549

Добрый день. С наступившим.

Никак не могу заставить работать SQLite3 на Debian (на винде норма...)

Доставил модули

apt-get install sqlite3 libsqlite3-dev
apt-get install php5-sqlite3

Включен в apache2 и cgi

Рестарт сделал. phpinfo() выдает что все нормально

sqlite3

SQLite3 support => enabled
SQLite3 module version => 0.7
SQLite Library => 3.7.13

Directive => Local Value => Master Value
sqlite3.extension_dir => no value => no value

Вчера вроде бы много не пил...

При этом все равно Call to undefined function sqlite3_open().

Что за баг и как с ним бороться?

anonymous, думай что говоришь и не забывай подписать отзыв :)
LEOnidUKG
На сайте с 25.11.2006
Offline
1723
#1

Вы попробуйте уже через стандарт работать PDO

$db = new PDO('sqlite:mysqlitedb.db');

И всё заработает.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/
Хелпзонович
На сайте с 15.06.2005
Offline
133
#2

Надо было пить больше :)

Нет такой функции sqlite3_open

Используйте объектно-ориентированый подход

http://php.net/manual/ru/class.sqlite3.php

Вы там держитесь! Хорошего вам настроения. Здоровья.
Metal Messiah
На сайте с 01.08.2010
Offline
152
#3

Что значит нет sqlite3_open когда она есть, точнее была.

Есть такой класс разработчиков, не заботящихся об обратной совместимости. Не знаю точно, когда эта эпидемия началась, но хорошо помню что в Windows XP были тупо вырезаны функции из системных библиотек, в результате куча софта, разработанного раньше выхода XP ругались на то что точка входа не найдена, а для совместимости с разными версиями позже приходилось писать кучу лишнего кода для динамического импорта...

Пришлось еще кучу кода переписывать до того как понял что есть параметр SQLITE3_ASSOC...

P.S. нет уж, на PDO переписывать не буду.

P.S.2. на сервере 4 ядра, процесс до сих пор идет хотя на рабочем ноуте время "обработки" 16Мб-базы было в пределах 10 минут... Надо будет еще вывод прогресса и замер времени писать...

pupseg
На сайте с 14.05.2010
Offline
347
#4
Metal_Messiah:
Есть такой класс разработчиков, не заботящихся об обратной совместимости.

как клиентов сажать на поддержку , если будет обратная совместимость?

Качественная помощь в обслуживании серверов. (/ru/forum/661100) Бесплатных консультаций не даю, не помогаю, не обучаю. Минималка от 100$. Как пропатчить KDE-просьба не спрашивать. Есть форумы (http://linux.org.ru) и полезные сайты (http://www.opennet.ru/).
WEMASTER
На сайте с 16.08.2012
Offline
95
#5
Metal_Messiah:
Есть такой класс разработчиков, не заботящихся об обратной совместимости.

Шел 2016 год, уже вышел PHP 7.

PHP 5.3 вышла в 2009 году а вы еще вспоминаете о sqlite3_open.

А если просто, вместо

$db = sqlite3_open('mysqlitedb.db'); 

Используйте

$db = new SQLite3('mysqlitedb.db');

Ну а лучше всего конечно PDO.

N
На сайте с 06.05.2007
Offline
419
#6
WEMASTER:
Шел 2016 год, уже вышел PHP 7.

И что ?

Почему люди должны страдать, если горстка технократов не может разобраться в своем коде 5летней давности и продолжать его поддерживать?

Я понимают, что мы тут никак не повлияем на процесс, но почему вы их оправдываете ?

Кнопка вызова админа ()
Mik Foxi
На сайте с 02.03.2011
Offline
1076
#7
WEMASTER:

Ну а лучше всего конечно PDO.

Не лучше. pdo это костыль между php и sqlite3, без которого можно (и скорее даже нужно) обойтись.

Антибот, антиспам, веб файрвол, защита от накрутки поведенческих: https://antibot.cloud/ + партнерка, до 40$ с продажи.
LEOnidUKG
На сайте с 25.11.2006
Offline
1723
#8
foxi:
Не лучше. pdo это костыль между php и sqlite3, без которого можно (и скорее даже нужно) обойтись.

Не знаю, мне лично очень нравится PDO для sqlite. По одной простой причине, если захочу расширить скрипт и мне будет не хватать sqlite. Я просто создам таблицу mysql и будет у все пахать без правки кода.

С простой mysql я до сих пор работаю через обычный mysql_ и как-то не парит сильно. А вот с sqlite только через PDO. + помню там были траблы, я писал под sqlite2 и из-за этого мой скрипт на новых версиях PHP не пахал :( А вот переписал и теперь всё просто летает.

Mik Foxi
На сайте с 02.03.2011
Offline
1076
#9
LEOnidUKG:
Не знаю, мне лично очень нравится PDO для sqlite. По одной простой причине, если захочу расширить скрипт и мне будет не хватать sqlite. Я просто создам таблицу mysql и будет у все пахать без правки кода.

🤪 так и знал, что эту причину приведут первой, и скорее всего единственной.

Но на самом деле большинство скриптов скорее всего переделывать на mysql не придется, а если придется, то переделывать в скриптах нужно будет во много раз больше, чем сменить пару строк запросов к базе.

SQLite3 я первый раз тоже с PDO изучать и осваивать стал, потом открыл для себя работу без PDO, понял что это красиво и удобно.

A
На сайте с 04.11.2007
Offline
89
#10
foxi:
🤪 так и знал, что эту причину приведут первой, и скорее всего единственной.
...

Есть известный баг с двойным запросом, из-за которого лучше не заморачиваться и использовать PDO. На мелких таблицах незаметно, а вот на гигабайтных очень.

По своему опыту добавлю, что update, insert, singleQuery быстрее на чистом SQLite3 классе. Если fetch, fetchAll - лучше через PDO.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий