Php

PHP安裝sqlite3擴展

  • November 12, 2011

我們這裡使用的是 PHP 5.3.6,但是我們在編譯 PHP 時使用了 –without-sqlite3 命令。(它位於“配置命令”列中)。但是,在該伺服器上重新編譯 PHP 是非常危險的;有很多遊客。我們如何安裝/使用 sqlite3?

問候,凱文

$$ EDIT $$ yum repolist 給出:

Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirror.nl.leaseweb.net
* extras: mirror.nl.leaseweb.net
* updates: mirror.nl.leaseweb.net
repo id                        repo name                                  status
base                           CentOS-5 - Base                            3,566
extras                         CentOS-5 - Extras                            237
updates                        CentOS-5 - Updates                           376
repolist: 4,179

rpm -qa | grep php 給出:

php-pdo-5.3.6-1.w5
php-mysql-5.3.6-1.w5
psa-php5-configurator-1.5.3-cos5.build95101022.10
php-mbstring-5.3.6-1.w5
php-imap-5.3.6-1.w5
php-cli-5.3.6-1.w5
php-gd-5.3.6-1.w5
php-5.3.6-1.w5
php-common-5.3.6-1.w5
php-xml-5.3.6-1.w5

php -i | grep sqlite 給出:

PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/sqlite3.so' - /usr/lib64/php/modules/sqlite3.so: cannot open shared object file: No such file or directory in Unknown on line 0
Configure Command =>  './configure'  '--build=x86_64-redhat-linux-gnu' '--host=x86_64-redhat-linux-gnu' '--target=x86_64-redhat-linux-gnu' '--program-prefix=' '--prefix=/usr' '--exec-prefix=/usr' '--bindir=/usr/bin' '--sbindir=/usr/sbin' '--sysconfdir=/etc' '--datadir=/usr/share' '--includedir=/usr/include' '--libdir=/usr/lib64' '--libexecdir=/usr/libexec' '--localstatedir=/var' '--sharedstatedir=/usr/com' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--cache-file=../config.cache' '--with-libdir=lib64' '--with-config-file-path=/etc' '--with-config-file-scan-dir=/etc/php.d' '--disable-debug' '--with-pic' '--disable-rpath' '--without-pear' '--with-bz2' '--with-exec-dir=/usr/bin' '--with-freetype-dir=/usr' '--with-png-dir=/usr' '--with-xpm-dir=/usr' '--enable-gd-native-ttf' '--without-gdbm' '--with-gettext' '--with-gmp' '--with-iconv' '--with-jpeg-dir=/usr' '--with-openssl' '--with-pcre-regex=/usr' '--with-zlib' '--with-layout=GNU' '--enable-exif' '--enable-ftp' '--enable-magic-quotes' '--enable-sockets' '--enable-sysvsem' '--enable-sysvshm' '--enable-sysvmsg' '--with-kerberos' '--enable-ucd-snmp-hack' '--enable-shmop' '--enable-calendar' '--without-mime-magic' '--without-sqlite' '--without-sqlite3' '--with-libxml-dir=/usr' '--enable-xml' '--with-system-tzdata' '--enable-force-cgi-redirect' '--enable-pcntl' '--with-imap=shared' '--with-imap-ssl' '--enable-mbstring=shared' '--enable-mbregex' '--with-gd=shared' '--enable-bcmath=shared' '--enable-dba=shared' '--with-db4=/usr' '--with-xmlrpc=shared' '--with-ldap=shared' '--with-ldap-sasl' '--with-mysql=shared,/usr' '--with-mysqli=shared,/usr/bin/mysql_config' '--enable-dom=shared' '--with-pgsql=shared' '--enable-wddx=shared' '--with-snmp=shared,/usr' '--enable-soap=shared' '--with-xsl=shared,/usr' '--enable-xmlreader=shared' '--enable-xmlwriter=shared' '--with-curl=shared,/usr' '--enable-fastcgi' '--enable-pdo=shared' '--with-pdo-odbc=shared,unixODBC,/usr' '--with-pdo-mysql=shared,/usr' '--with-pdo-pgsql=shared,/usr' '--with-pdo-sqlite=shared,/usr' '--with-pdo-dblib=shared,/usr' '--enable-json=shared' '--enable-zip=shared' '--with-readline' '--with-pspell=shared' '--enable-phar=shared' '--with-mcrypt=shared,/usr' '--with-tidy=shared,/usr' '--with-mssql=shared,/usr' '--enable-sysvmsg=shared' '--enable-sysvshm=shared' '--enable-sysvsem=shared' '--enable-posix=shared' '--with-unixODBC=shared,/usr' '--enable-fileinfo=shared' '--enable-intl=shared' '--with-icu-dir=/usr' '--with-recode=shared,/usr'
/etc/php.d/pdo_sqlite.ini,
/etc/php.d/sqlite3.ini,
PHP Warning:  Unknown: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Berlin' for 'CET/1.0/no DST' instead in Unknown on line 0
PDO drivers => mysql, sqlite
pdo_sqlite
PWD => /root/sqlite
_SERVER["PWD"] => /root/sqlite
_ENV["PWD"] => /root/sqlite

在沒有它的情況下安裝 php 然後安裝包:php5-sqlite3 然後重新啟動 apache 以使其工作。

但是我們在編譯 PHP 時使用了 –without-sqlite3 命令。(它位於“配置命令”列中)

不,你沒有具體說明。這是安裝二進制包時的預設選項。

但是,在該伺服器上重新編譯 PHP 是非常危險的;有很多遊客。

--without-xx來自頁面中的配置命令phpinfo()並不意味著您必須重新編譯 PHP 才能啟用。例如,您可以看到--without-mysql選項,但您仍然可以安裝php-mysql以啟用它:

mysql

MySQL Support => enabled
Active Persistent Links => 0
Active Links => 0
Client API version => 5.5.15
MYSQL_MODULE_TYPE => external
MYSQL_SOCKET => /var/lib/mysql/mysql.sock
MYSQL_INCLUDE => -I/usr/include/mysql
MYSQL_LIBS => -L/usr/lib64/mysql -lmysqlclient 

由於您安裝了php-pdo軟體包:

/etc/php.d/pdo_sqlite.ini,
PDO drivers => mysql, sqlite
pdo_sqlite
PDO Driver for SQLite 3.x => enabled
SQLite Library => 3.3.6

sqlite3擴展已啟用,但名稱不同pdo_sqlite。只需使用它來訪問 SQLite 3 數據庫。

引用自:https://serverfault.com/questions/330358