MT4 PHP via COM_DOT_NET.
This way works just for Windows hosting.
Lets start with our PHP installation, later you can do all the same with yours PHP installation.
1. Unzip php.zip to c:\
2. Run php/test1/netphp/register_x86. Its php x86 so even if you have x64 system run register_x86.
3. Run php/test1/run.cmd
If no luck let me know, we'll solve.
In sample used following account that you can open in any MT4 terminal:
user: 67611
pass: wx1yhpn
server: demo.fxgerchik.com
If you want to use your own php you just need to put in php.ini following lines:
[COM_DOT_NET]
extension=php_com_dotnet.dll
<?php     include_once('netphp/src/Core/ComProxy.php');     include_once('netphp/src/Core/NetProxy.php');     include_once('netphp/src/Core/MagicWrapper.php');     include_once('netphp/src/Core/NetPhpRuntime.php');     try     {         $rt = new \NetPhp\Core\NetPhpRuntime('COM', 'netutilities.NetPhpRuntime');         $rt->Initialize();         $rt->RegisterNetFramework2();         $rt->RegisterAssemblyFromFile("MT4ServerAPI.dll", "MT4ServerAPI");                 $qc = $rt->TypeFromName("TradingAPI.MT4Server.QuoteClient");         $srv = $qc->LoadSrv("GerchikCo-Demo.srv"); $host = $srv->Host;         $port = $srv->Port; echo $host->Val();         echo "\n";         echo $port->Val();         echo "\n";         $qc->Instantiate();         $qc->Init(67611, "wx1yhpn", $host, $port);         $qc->Connect();         echo "Account balance = ".$qc->AccountBalance->Val()."\n";         $qc->Subscribe("EURUSD");         while ($qc->GetQuote("EURUSD")->Val() == null)         {         }         $ask = $qc->GetQuote("EURUSD")->GetAsk()->Val();         echo "EURUSD Ask = ".$ask."\n";         $oc = $rt->TypeFromName("TradingAPI.MT4Server.OrderClient");         $oc->Instantiate();         $oc->Init($qc);         $oc->Connect();         $op = $rt->TypeFromName("TradingAPI.MT4Server.Op");         $order = $oc->OrderSend("EURUSD", $op->Enum("Buy"), 0.1, $ask, 0, 0.0, 0.0);         echo "Order opened ".$order->ToString()->Val();     } catch (Exception $e)     {         echo $e->getMessage();     } ?>