Я только что понял, что версия php rpm, которую я установил на сервере, не имеет поддержки sqlite (ну, у нее есть поддержка PDO, но по какой-то причине не работает)
поэтому я установил расширение PECL, и теперь он показывает поддержку phpinfo (), но все же открытый скрипт приглашения выдает ошибку:
Вызов неопределенной функции sqlite_open ()
и я уже перезапустил httpd
какие-нибудь подсказки, где я могу найти решение или руководство?
Удалите пакеты php * и установите эквивалентные пакеты php53 * - они доступны, начиная с RHEL / CentOS 5.6. Они поддерживают sqlite PDO из коробки.
Вы можете это проверить. Создать файл /tmp/test-pdo-sqlite.php
с содержанием:
<?php
try {
$dbh=new PDO('sqlite:test.sqlite');
$version = $dbh->query('select sqlite_version()')->fetchColumn();
echo $version, "\n";
} catch (PDOException $e) {
trigger_error("Error!: " . $e->getMessage(),E_USER_ERROR);
}
?>
И запустите его с cd /tmp/; php test-pdo-sqlite.php
- на моем CentOS 5 с php53 я получаю:
3.3.6
У меня установлены следующие пакеты:
$ rpm -qa --qf='%{NAME}\n' | grep php | sort
php53
php53-cli
php53-common
php53-gd
php53-mbstring
php53-mcrypt
php53-mysql
php53-pdo
В Интернете можно найти вопросы и ответы о поддержке sqlite в PHP в дистрибутивах Fedora Core, Red Hat и CentOS. Хотя у многих из них есть различия в том, как включить поддержку, все они говорят одно и то же о причине: пакеты для PHP в этих дистрибутивах скомпилированы без поддержки SQLite (насколько мне известно, он не был встроен в эти дистрибутивы с Fedora Ядро 4). Насколько мне известно, в настоящее время нет RPM для простой установки php-sqlite3.
Кроме того, не рекомендуется устанавливать расширение PECL для SQLite, так как это устарела и больше не поддерживается.
При этом PHP в этих дистрибутивах действительно включает поддержку php-pdo, и вы можете использовать ее для доступа к базам данных sqlite. Основными отличиями являются строки подключения (вы не используете sqlite_open, а вместо этого используете строку pdo, например: $db = new PDO('sqlite:/tmp/foo.db');
). Список sqlite функции с использованием PDO можно найти в Руководстве по PHP. Я считаю, что если вы измените свой код, чтобы использовать эти функции вместо функций в php-sqlite, ваши проблемы будут решены.
Если вам нужна поддержка php-sqlite, а php-pdo не работает, вы можете попробовать следующее, чтобы перекомпилировать php с поддержкой php-sqlite. Загрузите исходный код PHP из http://php.net/downloads.php и скомпилировать его с поддержкой модуля SQLite.
tar xfvj php-5.3.2.tar.bz2
cd php-5.3.2/ext/sqlite/
phpize
./configure
make
make install
/etc/init.d/httpd restart