I figured it out...here a working script that will receive events in PHP. I'll be re-writing this and putting it in a class at some point.
<?php
class X10EventSinker {
function recvaction( $bszRecv , $vParm1 , $vParm2 , $vParm3 , $vParm4 , $vParm5 ) {
echo "{$bszRecv} {$vParm1} {$vParm2} {$vParm3} {$vParm4} {$vParm5}\n";
}
}
$x10 = new COM("X10.ActiveHome") or die("Unable to instantiate X10 COM object");
$sink = new X10EventSinker();
com_event_sink( $x10 , $sink , "_DIActiveHomeEvents" );
$x = time() + 30;
echo "start\n\n";
while( time() < $x ) com_message_pump( 1000 );
echo "\n\nend";
?>