I want to have a function to send eth to another address by php program, and I do not want to run a local node on my server. Can I use infura as the web3 provider and use the API to send eth to another address? That means, can I use infura as the node, not using my own local node. I heard that I must sign the message offline? can I directly call infura API to sign? or any easy PHP script for sign and send transaction without running a local node? Thanks
You can use infura, but you need to sign the messages locally and send a raw transaction. Infura's nodes will not allow you to store your keys in there (and you shouldn't). Another option is to use metamask, which is using infura nodes, but it will take care of the signing locally.
You will find how to sign locally described in this answer: how to use ethereumjs-tx.js in a browser
Hope this help