In the above code you didn't specify the SourceFile, so its throwing the error. Here's the updated code, that will help you solve this problem.
// Grant permissions via user id
$s3->putObjectAcl(array(
'Bucket' => '[Bucket name]',
'Key' => '[File location in bucket]',
'SourceFile' => '[File to be uploaded location]', // add this line
'Grants' => array(
array(
'Grantee' => array(
'ID' => '[User ID from IAM API]',
'Type' => 'CanonicalUser'
),
'Permission' => 'FULL_CONTROL'
)
)
));