php開發以太坊沒法鏈接到遠程Geth,connect: permission denied.

我在安裝了Geth節點的ubuntu服務器X上建立了一個shell腳本,在測試鏈中插入智能合約數據。此外,我經過使用Shell腳本命令在同一服務器X上建立一個PHP文件insertscript.php。當我從命令提示符調用PHP腳本時,它會成功執行,而且數據被插入到區塊鏈中。可是當我用CURL調用另外一個服務器的PHP腳本或在瀏覽器中打開它時,我會看到錯誤:php

Fatal: Unable to attach to remote geth: dial unix ///home/ubuntu/.ethereum/testnet/geth.ipc: connect: permission denied

個人shell腳本以下:web

#!/bin/sh
ATTACHPARAMETER="ipc:///home/ubuntu/.ethereum/testnet/geth.ipc"
INCIDENTUUID=${1:-"photo-55697b7f4a550511448499999999"}
USERUUID=${2:-"null"}
TIMESTAMP=$3
STATUS=$4

echo $INCIDENTUUID
echo $USERUUID
echo $TIMESTAMP
echo $STATUS

geth attach $ATTACHPARAMETER << EOF

var abi = [abi definition];
var address = "addressofContract";
var mycontract = web3.eth.contract(abi).at(address);
eth.defaultAddress = eth.accounts[0];
personal.unlockAccount(eth.accounts[0],'test');

mycontract.createIncident('$INCIDENTUUID','$USERUUID',$TIMESTAMP,$STATUS,{from:eth.accounts[0],gas:1400000});
console.log("Inserted");


EOF

問題解答

這是由於你的Geth二進制文件在一個用戶標識下運行,可是WebServer運行在另外一個用戶標識下。shell

你必須讓geth.ipc文件能夠讀寫到你的Web服務器上,不管是經過組訪問仍是在兩個進程(WebServer和Geth)上使用相同的user_id。ubuntu

此外,請注意,不能經過2個計算機之間的IPC(進程間通訊)共享Geth訪問,IPC僅在單個計算機內工做,由於它是數據共享的內核級實現。瀏覽器

若是想系統的學習php開發以太坊的話推薦一個很受歡迎的在線互動教程: php以太坊,主要是介紹使用php進行智能合約開發交互,進行帳號建立、交易、轉帳、代幣開發以及過濾器和事件等內容。服務器

相關文章
相關標籤/搜索