Re: Can't open SQLite DB... but only when using mod_php??
| From: | Thodoris | Date: | Wed, 03 Oct 2007 10:26:43 +0000 |
| Subject: | Re: Can't open SQLite DB... but only when using mod_php?? | ||
| References: | 1 2 | Groups: | php.db |
| Request: | Send a blank email to php-db+get-44102@lists.php.net to get a copy of this message | ||
Well the directory that houses the database should be writable. Running the script from command line it gives you write access probably but it won't work using mod_php because the web server probably can't write. Try it and give us some feedback.
--
Thodoris
O/H Chris έγραψε:
> Markus Wolff - NorthClick wrote:
>> Hey there,
>>
>> I'm trying to open an SQLite3 database from a PHP very simple PHP
>> script:
>>
>> $db = dirname(__FILE__).'/frontend.db';
>> $pdo = new PDO('sqlite:'.$db);
>> $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
>> $pdo->query("SELECT * FROM page LIMIT 1");
>> echo "Deleting pages\n"; $pdo->query("DELETE FROM page");
>> echo "Deleting websites\n";
>> $pdo->query("DELETE FROM website");
>>
>> The database file contains no data whatsoever, just the table
>> definitions (in case you were wondering, this is a stripped-down version
>> of a larger script for debugging purposes, hence the seemingly idiotic
>> DELETE statements that won't do any good in an empty database anyway,
>> but I digress...).
>>
>> When executed on the command line, this works perfectly. When I execute
>> the same script via Apache and mod_php, I'm getting this exception:
>>
>> PDOException: SQLSTATE[HY000]: General error: 1 SQL logic error or
>> missing database in /home/mwolff/webs/markus/cms/test.php on line 8
>>
>> Getting experimental, I've tried to change the calls for the DELETE
>> statements from $pdo->query() to $pdo->exec(), just to see what happens.
>> Well, what happens is that I'm getting a different error:
>>
>> PDOException: SQLSTATE[HY000]: General error: 14 unable to open database
>> file in /home/mwolff/webs/markus/cms/test.php on line 6
>>
>> Argh... what can possibly be wrong here? The script works from the
>> commandline, with the exact same PHP version (Debian package, PHP
>> 5.2.0-8+etch7, and we also tried upgrading to the latest Debian package
>> of 5.2.4, to no avail).
>>
>> It can't be file permissions, I've even tried to set the database file
>> to 777... no change at all.
>
> My guess is still permissions. If you try a raw fopen instead of using
> pdo, what happens?
>
> <?php
> error_reporting(E_ALL);
> ini_set('display_errors', true);
> $fp = fopen(dirname(__FILE__).'/frontend.db', 'r');
> if ($fp) {
> echo "Opened db<br/>\n";
> } else {
> echo "Unable to open db<br/>\n";
> }
> fclose($fp);
> ?>
>