Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Sqlite3 и PHP: как их подружить?  (Прочитано 27171 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Vodoleyii
Гость
« : 24-05-2010 03:54 » 

У меня стоят Апач 2.2.15 и php 5.2.13(из zip-архива распакованный). В php.ini прописал все расширения для sqlite3: php_pdo.dll, php_pdo_sqlite.dll, php_pdo_sqlite_external.dll, php_sqlite3.dll. Все файлы библиотек скачал и кинул в папку ext(в каталоге php). sqlite3.dll поместил и в папку с php, и в system32. Sqlite3 не подключается. Сам думаю, что куда-то не туда кидаю sqlite3.dll...или же php.ini куда-нибудь переместить, может в path в windows прописать надо папку с php.ini или sqlite3.dll, хотя уже вроде делал это. В общем, не знаю, что тут может быть... Может, и руки у меня кривые Заранее благодарен
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 24-05-2010 05:42 » 

Vodoleyii, библиотеки должны лежать в ext в директории PHP. Фишка в расположении конфига php.ini - положи его в C:\WINDOWS. После этого надо рестартовать Апач.

Проверить, какие расширения установлены:

Код:
<?php

phpinfo
();

?>
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Vodoleyii
Гость
« Ответ #2 : 24-05-2010 11:29 » 

 Расширения лежат именно в "php/ext", php.ini - в с:\windows. phpinfo() постоянно тыкаю, но там и намека не нашел на расширения:(... И еще: в php.ini меняю extension_dir, перезапускаю сервер, да даже уже перезагружался, а phpinfo() выдает старые значения. У меня такое ощущение, что php.ini как-то плохо читается сервером.... Короче говоря, пока я в том же тупике.
Записан
Vodoleyii
Гость
« Ответ #3 : 24-05-2010 12:07 » 

в phpinfo() есть раздел Additional Modules. Предполагаю, что именно там и должны замаячить мои расширения, но сейчас раздел этот абсолютно пуст.
Записан
Kivals
Команда клуба

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 24-05-2010 12:30 » 

Vodoleyii, Проверь нет ли у тебя на диске других php.ini. По идее файлы должны искаться в таком порядке: сначала в каталоге запуска программы (Apache или PHP), а потом в каталогах %Path% по порядку вхождения
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 24-05-2010 12:59 » 

http://www.php.net/manual/en/configuration.file.php

Цитата
If php-SAPI.ini exists (where SAPI is used SAPI, so the filename is e.g. php-cli.ini or php-apache.ini), it's used instead of php.ini.

Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Vodoleyii
Гость
« Ответ #6 : 24-05-2010 13:23 » 

Да, у меня php.ini были и в каталоге с Апачем и в c:\windows. Все сделал, все исправил. sqlite заработал, но sqlite3 так и не подключается. Читал я и искал много про подключение sqlite3, буду читать и искать дальше дальше:)...
Записан
Vodoleyii
Гость
« Ответ #7 : 24-05-2010 14:02 » 

В phpinfo() не видится sqlite3... Единственный намек вот:
pdo_sqlite
PDO Driver for SQLite 3.x   enabled
PECL Module version    1.0.1 $Id: pdo_sqlite.c 293036 2010-01-03 09:23:27Z sebastian $
SQLite Library    3.3.7undefined
sqlite3_libversion() выводит версию 2.8.17.
Однако в sqlitemanager'e появилась возможность создавать базы третьей версии.
Подключил, но коряво:( Если на работе это не скажется, готов не обращать внимание. но все равно хотелось бы нормально подключить все. Спасибо всем, кто поучаствовал в решении моей проблемы. Решена на 80% - так могу сказать.
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #8 : 24-05-2010 15:57 » 

Цитата
The SQLite3 extension is enabled by default as of PHP 5.3.0.

Попробуй поставить PHP 5.3 — сейчас доступна версия 5.3.2.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Vodoleyii
Гость
« Ответ #9 : 24-05-2010 16:56 » 

Попробовал php 3.2. Там нет библиотек, с помощью которых php к апачу привязывается: phpapache2_2.dll, еще какие-то. Я их из из 5.2 взял. Связка php+apache заработала! PHP 5.3, в котором есть sqlite3... И вот этот php не подключает мне sqlite. После долгой возни в php 5.2 я смог подключать sqlite 2.8, и sqlitemanager мог создавать базы третьей версии (хотя любой код php, касающий sqlite3, не работал). В php 5.3 все глухо. Примечательна разница между php 5.2 и 5.3: в пять.два файлы привязки к апачу сразу идут. Что касается расширений: в 5.3 есть sqlite3.dll, но нет php_pdo.dll, поэтому в этой версии я не смог сделать даже так, чтобы в phpinfo() у меня pdo драйверы загрузились нормально. Php 5.2 привязывается к апачу, как родной (кстати, в нем нет файла php5.dll, в отличие от версии 5.3), но тут нет php_sqlite3.dll. И у меня один вопрос: что за нафиг?... Все-таки настроить sqlite3 я еще не отчаиваюсь;)  Читал всякие форумы: там говорится о sqlite3.dll. Два человека сказали, что его нужно кинуть в c:\windows\system32, а один - в папку, где php лежит. Если кто-то что-то знает, жду комментариев;)
В логе сервера пишется: "Unable to load dynamic library 'c:\\Program Files\\Apache Software Foundation\\Apache2.2\\PHP\\ext\\php_sqlite3.dll'" и дальше в текст в hex-кодировке...
« Последнее редактирование: 24-05-2010 17:17 от Vodoleyii » Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #10 : 24-05-2010 17:45 » 

Скачал php-5.3.2-Win32-VC9-x86. Распаковал. Вижу:
php5apache2_2.dll
php5apache2_2_filter.dll
ext/php_sqlite3.dll.

Полагаю дело в руках и в конфигах. Снеси старый PHP перед установкой нового!



Код:
<?php

header
(&#39;Content-Type: text/plain; charset-utf-8&#39;);
var_dump(SQLite3::version());

?>


Цитата
array(2) {
  ["versionString"]=>
  string(6) "3.6.22"
  ["versionNumber"]=>
  int(3006022)
}
« Последнее редактирование: 24-05-2010 18:51 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Vodoleyii
Гость
« Ответ #11 : 25-05-2010 05:28 » 

Я и сам грешу на свое недопонимание:) Сейчас попробую все сделать;) Нашел php 5.3 с библиотеками для апача. Но во всем остальном он ведет себя, как и та версия 5.3.... Там есть php_pdo_sqlite3.dll и php_sqlite3.dll. но работать они не хотят. В логах апача читаю, что эти два модуля не удалось загрузить. В phpinfo() написано: PDO drivers no value...про sqlite3 нет ни слова.
У меня вопрос, что прописано в php.ini?
У меня:
extension_dir = "ext"
extension=php_pdo_sqlite.dll
extension=php_sqlite3.dll
там есть еще отдельный раздел:
[sqlite3]
;sqlite3.extension_dir =
но с ним я тоже что только ни делал.

RXL, пишу твой код  - не работает.

У меня попутно родившийся вопрос:
array(2) {
  ["versionString"]=>
  string(6) "3.6.22"
  ["versionNumber"]=>
  int(3006022)
}
это ты в IDE каком-то проверяешь php-код? или где?
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #12 : 25-05-2010 05:33 » 

Во-первых, пропиши путь к php/bin в переменной окружения Path (Мой компьютер -> Свойства -> дополнительно -> [Переменные среды]).
Во-вторых, положи конфиг php.ini в подходящее место. Я кладу в C:\WINDOWS.
В-третьих, пропиши в конфиге Апача загрузку модуля php5apache2_2.dll с полным путем и укажи его обработчиком расширения php.
После этого перегрузи Апач.
« Последнее редактирование: 25-05-2010 05:36 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
baldr
Команда клуба

cy
Offline Offline
Пол: Мужской
Дорогие россияне


WWW
« Ответ #13 : 25-05-2010 06:38 » 

Первое, что я делаю при установке PHP на винде (установка=копирование папки из архива) - это копирую файлы libeay32.dll и ssleay32.dll (ну еще libmysql.dll) в папку c:\windows\system32
После этого уже можно настраивать остальное. По-другому не работает Жаль
Записан

Приличный компьютер всегда будет стоить дороже 1000 долларов, потому что 500 долларов - это не вполне прилично
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #14 : 25-05-2010 07:12 » 

baldr, достаточно прописать путь к ним в PATH — я это выше указал первым пунктом. Замусоривать системные директории не есть гуд.

Все требования к установке хорошо описаны в документации, включая последовательность поиска библиотек и конфигов.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
baldr
Команда клуба

cy
Offline Offline
Пол: Мужской
Дорогие россияне


WWW
« Ответ #15 : 25-05-2010 07:19 » 

RXL, в моем случае почему-то не достаточно. Логичное решение, но не работает.
Записан

Приличный компьютер всегда будет стоить дороже 1000 долларов, потому что 500 долларов - это не вполне прилично
Vodoleyii
Гость
« Ответ #16 : 27-05-2010 01:36 » 

Все сделал, заработало:) прописал в path путь к папке с php, и прописал в php.ini в разделе extension_dir полный путь к папке "...php\ext"
Может быть, кому-нибудь поможет, как я все-таки сделал этот sqlite3:
  • поставил апач (я думаю: тут вопрососв и расхождений в действиях быть не должно)
  • с сайта php скачал php 5.3.2 VC9 x86 Thread Safe
  • в файле конфига апача - httpd.conf - у меня прописано:
      LoadModule php5_module "C:/Program Files/Apache Software Foundation/Apache2.2/PHP/php5apache2_2.dll"
      PHPiniDir "C:/WINDOWS/"
      В разделе
      <IfModule mime_module>
      AddType application/x-httpd-php .php
      АddType application/x-httpd-php-source .phps
    это тоже все стандартная процедура подключения php к апачу, после установки апача и php сразу это делается.
перехожу к sqlite3
  • прописал в PATH полный путь к папке, где установлен php (у меня php в папке с апачем лежит); php.ini закинут был в c:\windows
  • в самом php.ini (привожу свои пути - просто как пример):
      extension_dir = "c:\Program Files\Apache Software Foundation\Apache2.2\PHP\ext\"
      extension=php_pdo_sqlite.dll
      extension=php_sqlite3.dll
Обратите внимание: слеши в путях к папкам разные в php.ini и httpd.conf. Возможно, наклон можно и менять и все не столь строго, но не уверен.
После того, как я прописал в path папку php, phpinfo() стал выдавать много подключенных расширений, включая и mysql, а раньше не подгружал.
Всех благодарю за участие! RXL, тебе отдельное спасибо;)
Проблема решена на 100%! Не могу не сказать, что именно на этом форуме я нашел более всего отклика, больше, чем даже на php форумах.
« Последнее редактирование: 27-05-2010 01:41 от Vodoleyii » Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #17 : 27-05-2010 05:54 » 

Vodoleyii,

1. php_pdo_sqlite.dll не нужен, если ты не используешь интерфейс PDO.

2. В PATH прописывается не путь к php, а к php\bin.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Vodoleyii
Гость
« Ответ #18 : 28-05-2010 16:46 » 

Насчет pdo - понЯл;) А насчет php\bin - нет у меня папки bin в php....
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #19 : 29-05-2010 09:48 » new

Это странно, т.к. в дистрибутиве на php.net она есть.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines