我有一个大型硬盘我想存储数据mapserver(在Apache下运行为cgi-bin)但是我在尝试访问数据时遇到了错误。
当我尝试使用mapserver访问/ bac / data / gis中的任何内容时,我得到:
msDrawMap():图像处理错误。无法绘制名为“world”的图层。 msShapefileOpen():无法访问文件。 (/var/www/html/gis/world.shp)msShapefileOpen():无法访问文件。 (/bac/data/gis/global/world.shp)
来自mapserver日志文件的:
[Fri Aug 2 01:12:15 2013].100850 CGI Request 1 on process 28658
[Fri Aug 2 01:12:15 2013].105687 msDrawMap(): rendering using outputformat named png (AGG/PNG).
[Fri Aug 2 01:12:15 2013].105731 msDrawMap(): WMS/WFS set-up and query, 0.000s
[Fri Aug 2 01:12:15 2013].105819 msShapefileOpen(): Unable to access file. (/bac/data/gis/global/world.shp)
[Fri Aug 2 01:12:15 2013].105838 msShapefileOpen(): Unable to access file. (/var/www/html/gis/world.shp)
[Fri Aug 2 01:12:15 2013].105848 msDrawMap(): Image handling error. Failed to draw layer named 'world'.
[Fri Aug 2 01:12:15 2013].106077 mapserv request processing time (msLoadMap not incl.): 0.005s
[Fri Aug 2 01:12:15 2013].106085 msFreeMap(): freeing map at 0x1bdfde0.
我还尝试使用Apache直接访问数据,以查看它是否可以读取/ bac / data / gis中的任何内容。这是通过向httpd.cfg文件添加ailes和directory指令来完成的。 这与httpd-error日志中的流动错误消息失败。
[Thu Aug 01 22:52:37 2013] [错误] [client 192.168.0.1](13)权限被拒绝:访问/ gis / denied(文件系统路径'/ bac')因为缺少搜索权限路径的组成部分
文件系统安装为“/ bac”,数据位于/ bac / data / gis中 我的httpd directorys是/ var / www / [html cgi-bin] /
我已确保/ bac / dat / gis路径中所有控制器的+ x权限。我都是如此禁用seliux,因为这是我面对拒绝访问时首先尝试的第一件事。
是否可以使用Apache和cgi-bin脚本(如mapserver)访问其他文件系统上的数据?
答案 0 :(得分:1)
正如arkascha所指出的,在考虑访问权限时,挂载点和文件系统是无关紧要的。您应该检查您的apache用户是否有权访问这些文件:
user@host$ sudo su apache (apache may need to be replaced by httpd, www-data, check your apache config file to see under which user apache runs)
apache@host$ ls /bac/data/gis/global/world.shp
如果ls命令返回了权限错误,则表明您已确定错误原因。在这种情况下,检查/bac/data/gis/global/world.shp上的权限是否为apache的“+ r”(可能是“其他”),和所有中间目录有+ x。
sudo chmod o+r /bac/data/gis/global/world.*
sudo chmod o+x /bac
sudo chmod o+x /bac/data
sudo chmod o+x /bac/data/gis
sudo chmod o+x /bac/data/gis/global