Не могу заставить работать 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.

Другие вопросы по тегам