(не решение ... пока)
Что значит
$command = $_POST['command'];
$host = $_POST['host'];
$port = $_POST['port'];
$fp = @fsockopen($host, $port, $e, $s, 15);
if (!$fp) {
echo 'Error! Here\'s your problem: ' . $e . ': ' . $s;
}
else{
$fw = fwrite($fp, $command);
if (false===$fw) {
echo 'Failed sending command. ';
if ( function_exists('error_get_last') ) {
var_dump( error_get_last() );
}
}
else if ( strlen($command)!==$fw ) {
printf('only %d of strlen(%s)=%d bytes have been sent', $fw, $command, strlen($command));
}
else{
echo 'Successfully sent ', $fw, ' bytes. command=', $command;
}
fclose($fp);
}
печать
обновление: работает ли оно, когда вы тестируете его на этом фиктивном серверном скрипте (через php-cli)?
$srv = socket_create_listen(8082);
for($dbgCounter=0; $dbgCounter < 60; $dbgCounter++ ) {
echo '.';
$read = array($srv); $write=array(); $ex=array();
if ( 0 < socket_select($read, $write, $ex, 1) ) {
echo "\n";
$c = socket_accept($srv);
echo "socket accepted\n";
while( 0<socket_recv($c, $buffer, 1024, 0) ) {
var_dump($buffer);
}
echo "socket_close\n";
socket_close($c);
$dbgCounter = PHP_INT_MAX;
}
}
echo "done.\n";
Сначала попробуйте на том же компьютере ($ _POST ['host'] === 'localhost'), а затем на удаленном компьютере (если есть).