2012-01-17 27 views
1

有沒有人有任何想法,爲什麼我的服務器無法讀取數據庫文件?使用Maxmind GeoLiteCity進行地理定位,無法讀取數據庫文件

無論我怎麼努力,我不斷收到同樣的錯誤:

「無法打開GeoLiteCity.dat」

沒有任何解釋。該文件在那裏,我已經嘗試上傳,以確保它沒有損壞。我正在使用純php模塊。這兩個文件都在同一個目錄中...

我想在wordpress上設置它,可能是問題的一部分?

我的代碼只是基本的測試儀:

include("geoip.inc"); 

// read GeoIP database 
$handle = geoip_open("GeoLiteCity.dat", GEOIP_STANDARD); 

// map IP to country 
echo "IP address 62.149.130.132 located in " . geoip_country_name_by_addr($handle, "62.149.130.132") . " (country code " . geoip_country_code_by_addr($handle, "62.149.130.132") . ")"; 

// close database handler 
geoip_close($handle); 

,但它只是不會做它。

+0

什麼是文件權限? – 2012-01-17 15:37:12

+0

請檢查'is_readable(「GeoLiteCity.dat」)' – DerVO 2012-01-17 15:47:10

回答

2
  • 嘗試使用.dat文件的完整路徑。
  • 確保.dat文件位於Web服務器進程可以讀取的目錄中。
  • 確保.dat文件本身可供Web服務器進程讀取。
+0

Brill。就是這樣。不知道爲什麼,也許是因爲dat文件在插件中並且正在模板中調用(儘管通過函數中的類...因此它正在查找所有其他相關文件)。但是,相對於服務器的路徑是一種享受。謝謝! – josh 2012-01-17 17:37:57

1

您是否對文件設置了正確的權限?在linux上,確保文件可以被web服務器用戶讀取(通常是www-data)。

作爲一個快速測試,你可以嘗試將文件chmod命令777

是否能解決問題,那麼你知道那是你的問題,如果你願意,你就可以改變以獲得最佳的安全權限(即CHOWN它對www數據用戶和chmod它適合)

此外,請確保geoip類正在尋找數據庫的路徑是正確的。這些是我能想到的唯一的兩個問題,這會導致這種情況。

0

您是否嘗試過使用e.g

文件系統路徑之前編輯:

$gi = geoip_open('GeoLiteCity.dat', GEOIP_STANDARD); 

後編輯(FIX):

$gi = geoip_open('/var/www/html/googletitan/GeoLiteCity.dat', GEOIP_STANDARD); 

上述變化的固定同樣的錯誤我。