Не могу заставить работать php+sqlite
Я изо всех сил пытаюсь заставить php работать с базой данных sqlite. Вот фрагмент кода php, который я пытаюсь выполнить:
#less /var/www/html/test.php
<?php
$db=new PDO("sqlite:/var/www/test.sql");
$sql = "insert into test (login,pass) values ('login','pass');";
$db->exec($sql);
?>
Вот как я сделал тесты:
# sqlite3 /var/www/test.sql
sqlite> create table test (login varchar,pass varchar);
#chown apache:apache /var/www/test.sql
#chmod 644 /var/www/test.sql
Вот что меня бесит: когда я выполняю из командной строки:
#php test.php
все идет хорошо. Sql выполняется, и я вижу новую строку в базе данных.
Когда я выполняю тот же скрипт из браузера - sql не выполняется. Я не получаю новую строку в базе данных. В файле журнала apache ошибок нет.
Пожалуйста помоги
ОБНОВИТЬ:
Хорошо, у меня есть ответ. Похоже, что sqlite пытается создать новый файл -journal по запросу "INSERT". скалы:
open("/var/www/test.sql-journal", O_RDWR|O_CREAT|O_EXCL|O_LARGEFILE, 0644) = -1 EACCES (Permission denied)
Поэтому мне пришлось переместить базу данных sqlite в каталог, в который мог писать apache.
1 ответ
Командная строка PHP и PHP, выполняемые на веб-сервере, обычно используют другой файл php.ini, поэтому стоит проверить любые различия. У вас также могут быть установлены разные версии PHP, убедитесь, что командная строка и веб-сервер имеют одинаковую версию. Я видел серверы, на которых Apache запускал PHP5, но командная строка php запускала PHP4, если вы не указали полный путь к бинарному файлу PHP5.