Так порт последовательный или параллельный? Если последовательный, то комментатор вам предложил годное решение, а если каким-то чудом параллельный, то так:
Пишете программу на c++, которая сможет управляться аргументами коммандной строки типа такого controller.exe /p LPT1 /relay 2
Далее в php что-то типа такого exec("controller.exe /p LPT1 /relay".$relay); где $relay - релюха, которую вы будете врубать. Нужна будет помощь, пишите
https://vk.com/vadimkholodilo