Запуск SQLite 3 в MicroApache - PullRequest
       8

Запуск SQLite 3 в MicroApache

2 голосов
/ 21 апреля 2010

Я использую MicroApache (http://microapache.amadis.sytes.net) в Windows XP и хотел бы использовать базы данных SQLite 3.

Версия PHP 5.2.9-2.

Моя версия MicroApache имеет поддержку SQLite 2 через 2 строки в php.ini:
расширение = php_pdo.dll
расширение = php_sqlite.dll

Я проверяю, работает ли расширение тремя способами:
1. phpinfo ()
2. extension_loaded () и get_loaded_extensions ()
3. используя пример кода, который var_dump () содержит константу SQLITE3_NUM (должно быть целым числом 2) и пытается создать базу данных (ошибка: класс 'SQLite3' не существует)

Вещи, которые я пробовал (если я их все помню):
1. скопировал php_sqlite3.dll из полной установки PHP и добавил «extension = php_sqlite3.dll» в php.ini
-> ошибка "Точка входа в процедуру gc_remove_zval_from_buffer не найдена в php5ts.dll"
2. сжал DLL с помощью UPX (как и другие библиотеки MicroApache)
-> не отображает ошибку ни при запуске, ни в файле журнала, но не работает
3. пробовал разные вещи с php.ini
- создан раздел "[sqlite3]"
- с префиксом "sqlite3". на "extension_dir =." и "extension = php_sqlite3.dll"
- ...
4. пытался использовать PDO, он говорит, что «не может найти драйвер»

Кто может помочь мне заставить работать SQLite 3?

Ответы [ 3 ]

2 голосов
/ 30 апреля 2010

Проблема подключения к базам данных SQLite 3 и аналогичные проблемы рассматриваются и обсуждаются в сообщении на форуме под названием «Подключение к базе данных SQLite3 из PHP 5.25» Это может ответить на некоторые из ваших запросов.

Последняя сборка SQLite скомпилирована в PHP5 и включена через PDO.

Показывается в PHPINFO.PHP как

2.0-dev "$ Id: sqlite.c, v 1.166.2.13.2.12 2008/12/31 11:17:44 Себастьян Экспресс $"

Звучит больше как проблема с тестовым кодом. Вы перепроверили, запустив систему SQLite со стандартным Apache и той же версией PHP? Каковы результаты phpinfo() и т. Д.

Последние дистрибутивы MicroApache поставляются с гостевой книгой по PHP / SQLite в качестве демонстрации / теста. Это не работает?

Если подумать, вы, возможно, не заметили, что есть дистрибутив SQLite. Почему бы не зайти на сайт и не проверить другие версии (просто распаковать и запустить).

Как всегда, я отмечаю, что MicroApache не предназначен для использования на общедоступном веб-сервере, не обращая особого внимания на конфигурацию безопасности. Он был разработан как способ локального обмена информацией с помощью дискеты или USB-накопителя. Но затвердеть достаточно просто.

Я уверен, что вы знаете, что разработчик SQLite переименовал ряд функций с появлением SQLite3, включая функцию open - (см. Здесь: Введение в интерфейс SQLite C / C ++ ) - Я не уверен, как это было обработано разработчиками PHP, включая эту кодовую базу в PHP. На странице, на которую мы ссылаемся выше, мы предлагаем открыть базы данных PHp3 «как есть» с помощью правильного кода PHP.

Смешивать библиотеки DLL из разных дистрибутивов PHP не рекомендуется. Я не рекомендую использовать дистрибутив MicroApache, кроме как «как есть». Добавление или смешивание библиотек DLL из разных версий PHP и т. Д. В MicroApache может привести к серьезным ошибкам или проблемам безопасности.

На сегодняшний день SQLite с MicroApache практически не интересовался или вообще не интересовался, поэтому на самом деле я не слишком углублялся в него, кроме как для проверки работоспособности.
Я не слишком полагаюсь на то, что сообщается phpinfo().

Возможно, вы можете обновить информацию, чтобы подтвердить, является ли указанная версия точной.

Обновление

У меня было время немного изучить и обсудить php5-sqlite3 в списке рассылки Mac OS Forge ответит на вашу проблему.

Реализация PHP является частичной и плохо документированной. Некоторые вызовы процедурных функций SQLite3 предоставляются только объектно-ориентированной иерархией. Процедурный API предлагает только возможность открывать БД SQLite 2, так что вы застряли с использованием объектов по внешнему виду.

Существует также расширение PECL, php-sqlite3, которое было разработано в течение 2008 года, в настоящее время в версия 0.6. Это то, что Порт php5-sqlite3 устанавливается. Но это не предоставляет sqlite3_open Функция, которую вы ищете. Скорее это дает вам объектно-ориентированный интерфейс основанный на трех классах: SQLite3, SQLite3Stmt и SQLite3Result. это описанный здесь, довольно не полностью, особенно установка
инструкции полностью отсутствуют:

Надеюсь, вы сможете поиграть с этими дистрибутивами и решить свои проблемы.

Существует SQLite3.DLL, включенный в дистрибутив в качестве любезности, к которому можно получить доступ непосредственно из VB5 / 6 или любого совместимого языка, который может вызывать DLL.

Это был отдельный проект, на который я смотрел некоторое время назад. Это было сделано в MSVC путем редактирования исходного кода. Эта DLL не совместима с PHP / PDO, но может использоваться через интерфейс CGI. Альтернативно, исходная библиотека SQLite 3 может быть получена и использована через Delphi и т. Д.

0 голосов
/ 03 мая 2010

Я решил эту проблему еще немного, но все еще не мог создать / получить доступ к базе данных SQLite 3.

Интересно, что ссылка, которую вы предоставили в части 1, упоминает класс «SQLiteDatabase», которого нет в документации PHP и который не является частью расширения SQLite3 (которое является объектно-ориентированным - как упоминалось в вашем последнем посте, Mad Max) .

«SQLiteDatabase» создает базу данных, но когда вы открываете ее, вы видите, что она в версии 2.1.

Спасибо за помощь.

EDIT:
PDO работает только тогда, когда я использую префикс DSN «sqlite2», что неудивительно, поскольку phpinfo () перечисляет драйвер «sqlite2» только в разделе «PDO».

0 голосов
/ 24 апреля 2010

Обратите внимание, что у меня есть дистрибутив с поддержкой SQLite. Однако он поддерживает только версию 2, а не 3.

Моя версия MicroApache имеет поддержку SQLite 2 [...]

Я хотел бы использовать SQLite 3, потому что он быстрее, я мог взаимодействовать с базами данных, которые я создал для проекта в Delphi, и я мог получить доступ к вновь созданным базам данных с расширением Firefox SQLite Manager.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...