从PHP访问SQLITE数据库时出错(但它可以从命令行工作…)

从PHP访问SQLITE数据库时出错(但它可以从命令行工作…),php,sqlite,Php,Sqlite,我有一个简单的PHP代码,其中我连接了一个SQLITE数据库 <?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');

我有一个简单的PHP代码,其中我连接了一个SQLITE数据库

<?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! ...";
?>
但当我尝试执行表单命令行时,一切都很好

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#
我试图更改所有者和/或组,但没有任何更改

建议


提前谢谢你

您的权限错误。现在只有root用户可以访问该数据库。PHP不会(也不应该)以root用户身份在web服务器上运行。但是,当您从命令行运行它时,您是以root身份登录的,因此当您执行PHP代码时,它具有root权限

要修复它,您需要更改文件权限。为此,您可以使用。要知道您必须将所有权转移给哪个用户,您可以使用这个快速而肮脏的代码段

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

您的权限是错误的。现在只有root用户可以访问该数据库。PHP不会(也不应该)以root用户身份在web服务器上运行。但是,当您从命令行登录时,您是以root用户身份登录的,因此当您执行PHP代码时,它具有root权限。如果我尝试将OpenProntoSoccorso.sqlite所有者和组更改为“osbox”,我也会有相同的行为…可能是因为您的web服务器不是作为OSbox运行的,而是作为其他未经授权的用户运行的->快速而肮脏的方式->似乎返回了文件的所有者。您需要进程的所有者。试试这个
$processUser=posix_getpwuid(posix_geteuid());echo$processUser['name'](这是我发送给你的链接的第一条评论)
$processUser = posix_getpwuid(posix_geteuid());
echo $processUser['name'];