我使用CouchDB的PHP LIB添加一個觀點:CouchDB的觀點是訪問,但將不會運行查詢
public function addView() {
$design_doc = new stdClass();
$design_doc->_id = '_design/need';
$design_doc->language = 'javascript';
$design_doc->views = array('all' => array('map' => "function(doc) { if (doc.type == 'need') emit(doc.type, doc) }"));
$result = $this->client->storeDoc($design_doc);
return $result;
}
在我的殼,我認爲它的文檔,以確認它的創建:
curl -X GET mysite.com/bids/_design/need
{
"_id":"_design/need",
"_rev":"1-0ed4b41b839ade9ca36fb950cac1c39b",
"language":"javascript",
"views":
{
"all":
{
"map":"function(doc) { if (doc.type == 'need') emit(doc.type, doc) }"
}
}
}
然後嘗試實際執行視圖時,它拋出EACCES錯誤:
curl -X GET mysite.com/bids/_design/need/_view/all
{
"error":"error","reason":"eacces"
}
權限:實例以root身份運行。
我是否使用錯誤的語法來執行視圖查詢?
難道是通過PHP傳遞的字符串的編碼有問題嗎?
沙發以root用戶身份運行。另外,當我刪除視圖並直接從curl請求重新添加它時,它是功能性的。也許php-curl以某種方式創建了具有錯誤權限的文件 – Kristian 2012-04-06 13:51:50
有趣的是 - 我的解釋似乎與CouchDB以root身份運行的事實不一致。我很高興它正在工作,但從查詢視圖的時間和上面的錯誤中看到couch.log仍然很有趣。我不知道php-curl可能導致'.view'文件被創建的權限錯誤,所以我不認爲這是你的解釋。 – 2012-04-06 19:02:09
我認爲它確實必須與php的char編碼curl請求的方式有關......因此強制map函數並非真的是它的樣子......因爲直接在shell中運行相同的視圖PUT請求完美的作品。 – Kristian 2012-04-06 19:25:24