0

我在 Fedora 16 fc16.x86_64 上使用 php+ apache。我正在学习 php 和 sqlite3(使用 PDO)。但是我的代码不管用。

<?php
    try {
    $db = new PDO('sqlite:./z4.db');
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $db->prepare('SELECT * FROM users;');
    $posts = $db->execute();

        echo "test test";
        echo '<ul>';
        while ($post = $posts->fetchObject()) {
        echo '<li>' . $post->content . '</li>';
        }
        echo '</ul>';


    } catch (Exception $e) {
    die($e);
    }
?>

sqlite 3 没问题,数据库文件没问题,

php -m 的输出:

apc
bz2
calendar
Core
ctype
curl
date
dom
ereg
exif
fileinfo
filter
ftp
gd
gettext
gmp
hash
iconv
igbinary
json
libxml
mbstring
mcrypt
memcache
memcached
mhash
mongo
mysql
mysqli
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_pgsql
pdo_sqlite
pgsql
Phar
readline
Reflection
session
shmop
SimpleXML
sockets
SPL
sqlite3
standard
tokenizer
wddx
xml
xmlreader
xmlwriter
xsl
zip
zlib

rpm -qa 的输出 | grep php:

php-pecl-apc-3.1.9-2.fc16.x86_64
php-pgsql-5.3.11-1.fc16.x86_64
php-gd-5.3.11-1.fc16.x86_64
php-5.3.11-1.fc16.x86_64
php-pear-1.9.4-5.fc16.noarch
php-pdo-5.3.11-1.fc16.x86_64
php-pecl-mongo-1.2.10-1.fc16.x86_64
php-common-5.3.11-1.fc16.x86_64
php-devel-5.3.11-1.fc16.x86_64
php-cli-5.3.11-1.fc16.x86_64
php-mbstring-5.3.11-1.fc16.x86_64
php-mysql-5.3.11-1.fc16.x86_64
php-mcrypt-5.3.11-1.fc16.x86_64
php-pecl-memcached-1.0.2-6.fc16.x86_64
php-xml-5.3.11-1.fc16.x86_64
php-pecl-memcache-3.0.6-1.fc16.x86_64
php-pecl-igbinary-1.1.1-1.fc16.x86_64

在向 php.ini 添加一些扩展后,它会发出警告:模块 'xyz' 已经加载到未知 0... 所以我删除了它们。

4

1 回答 1

0

当您通过命令行执行 php 时,您通常不会执行与您的网络服务器运行相同的 php 二进制文件。它们可以是不同的版本,并且几乎总是有不同的 php.ini 和配置。

使用phpinfo () 从script run through the webserver. 使用它来找到要编辑的正确 php.ini 文件,然后重新启动网络服务器以确保设置更新。

打开display_errors并设置error_reportingE_ALL

于 2012-05-26T15:58:33.973 回答