数据库的符号链接在/ var / www中无效

时间:2014-04-22 13:27:03

标签: php sqlite ln


我正在一个传单地图网站上工作,可以访问实时天气数据。为了避免使用SUID,由于它的安全问题,我使用/ var / www中的符号链接到我的图像数据。这些是简单的png文件,这是有效的。

然后,我希望基于鼠标位置悬停在图像数据上来获得实时数据。为此,我使用实际值创建了一个SQLite3数据库。首先,作为测试,我手动将此数据库放在站点根目录中,一切都完美无缺。不幸的是,我无法在该位置拥有该数据库。然后,我使用与此数据库完全相同的图像数据(有效)。

过程是:

在我的网站根目录中:

ln -sf /path/to/db/ db
chmod 777 /path/to/db/data.db

然后由一个简单的PHP程序读取该文件以进行查询:

<?php

$lat = floatval($_GET['lat']);
$lon = floatval($_GET['lon']);

$db = new SQLite3('db/sst.db'); # line 6
$results = $db->query("SELECT sst FROM current ORDER BY (($lat-lat)*($lat-lat) + ($lon-lon)*($lon-lon)) ASC LIMIT 1");
while ($row = $results->fetchArray()) {
        echo $row['sst'];
}
?>

不幸的是,现在我在浏览器控制台中收到此错误:

Failed to load resource: the server responded with a status of 500 (Internal Server Error)

检查/var/log/apache2/error.log文件我收到以下错误:

PHP Fatal error:  Uncaught exception 'Exception' with message 'Unable to open database:
unable to open database file' in /var/www/Mapea/sst.php:6\nStack trace:\n#0
/var/www/Mapea/sst.php(6): SQLite3->__construct('db/sst.db')\n#1 {main}\n  thrown in
/var/www/Mapea/sst.php on line 6

2 个答案:

答案 0 :(得分:1)

在CL查询我对/path/path/to/path/to/db的权限后,我发现/path权限不正确。

使用以下命令后:

chmod 755 /path

我的申请现在100%工作。

答案 1 :(得分:0)

除了对文件完整路径的明显权限之外,可能存在问题的另一件事是 SELinux。

如果您在仔细检查文件权限后仍然存在权限问题,这很可能是罪魁祸首。 例如,在 RHEL 8 上,默认安全策略不允许 Apache 访问 NFS 卷上的文件,您需要传递命令

setsebool -P httpd_use_nfs 1

(永久使用 -P)授权。