@ctaylor, you were so close!  I made it work with a couple small tweaks.  Here's my code that works.
<?php
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, "https://www.triggercmd.com/api/run/triggerSave");
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_POSTFIELDS, '{"computer":"DS","trigger":"calculator"}');
  curl_setopt($ch, CURLOPT_POST, 1);
  $headers = array();
  $headers[] = "Authorization: Bearer (token from instructions page)";
  $headers[] = "Content-Type: application/json";
  curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
  $result = curl_exec($ch);
  if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
  }    
  curl_close ($ch);
?>
You'll see that I changed this line to use single quotes around the json object.
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"computer":"DS","trigger":"calculator"}');
And I changed this line to use application/json instead of application/x-www-form-urlencoded because you're passing a json object.
$headers[] = "Content-Type: application/json";
In case you're curious, this is how I tested my test.php script:
docker run -it --rm --name test-script -v d:\appdev\php:/myscript -w /myscript php:7.0-cli php test.php
BTW, I'm curious what your application is.