1

データ 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 内のデータを読み取れるかどうかを確認しました。これは、ailes および directory ディレクティブを httpd.cfg ファイルに追加することによって行われました。これは失敗し、httpd-error ログに流れるエラー メッセージが表示されます。

[Thu Aug 01 22:52:37 2013] [エラー] [クライアント 192.168.0.1] (13) 許可が拒否されました: /gis/ へのアクセスが拒否されました (ファイルシステム パス '/bac')。道

ファイル システムは「/bac」としてマウントされ、データは /bac/data/gis にあります。私の httpd ディレクトリは /var/www/[html cgi-bin]/ です。

/bac/dat/gis パス内のすべてのディレクタで +x パーミッションを確認しました。これは、アクセスが拒否された状況に直面したときに最初に試みる一般的なことであるため、私はすべてseliuxを無効にしました。

Apache や mapserver などの cgi-bin スクリプトを使用して、他のファイル システムのデータにアクセスすることはできますか?

4

1 に答える 1

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
于 2013-08-06T10:37:23.727 に答える