简体   繁体   中英

Errors when access to SQLITE database from PHP (but it works from command line …)

I've this simple PHP code in which I connect a SQLITE data base ...

<?php
   ini_set('display_errors', 1);

   echo 'Current script owner: ' . get_current_user();

   # Set access to data base...
   $db = new SQLite3('/var/www/html/OpenProntoSoccorso/Test/OpenProntoSoccorso.sqlite');

   echo ".... Connessione db OK! ...";
?>

when I try to execute from browser I've this error ...

Fatal error: Uncaught exception 'Exception' with message 'Unable to open database: unable to open database file' in /var/www/html/OpenProntoSoccorso/Test/testSpatialite.php:6 Stack trace: #0 /var/www/html/OpenProntoSoccorso/Test/testSpatialite.php(6): SQLite3->__construct('/var/www/html/O...') #1 {main} thrown in /var/www/html/OpenProntoSoccorso/Test/testSpatialite.php on line 6

but when I try to execute form command line all work fine

root@osboxes:/var/www/html/OpenProntoSoccorso/Test# ls -l
total 336536
-rwxr-x--- 1 root    root    330037248 Aug 17 14:20 OpenProntoSoccorso.sqlite
-rw-rw-r-- 1 osboxes osboxes       133 Aug 17 13:51 testSpatialite.php
root@osboxes:/var/www/html/OpenProntoSoccorso/Test# php testSpatialite.php 
.... Connessione db OK! ...root@osboxes:/var/www/html/OpenProntoSoccorso/Test#

I've tried to change owner and/or group but nothing change ...

Suggestions?

Thank you in advance!

Your permissions are wrong. Right now only root can access that database. You PHP does not (and should not) run as root on your web server. But when you are running it from the command line, you are logged on as root so when you execute the PHP code, it have root privileges.

To fix it, you will need to change the file permissions. for that, you can use chown . To know to which user you must transfer the ownership to, you can use this quick and dirty snippet

$processUser = posix_getpwuid(posix_geteuid());
echo $processUser['name'];

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM