openssl_verify(): clé fournie param ne peut pas être contrainte à une clé publique pour un .fichier pem

Actuellement en train de lire un .pem clé publique pour vérifier à travers openssl.

/**
 * Check whether the signed message sent back by the server is
 * correct or not.
 */
function check($str, $MAC)
{
    $fp = fopen(
        dirname(__FILE__) . '/rsa_public_key.pem',
        'r'
    );

    $cert = fread($fp, 8192);

    fclose($fp);

    $pubkeyid = openssl_get_publickey($cert);

    return openssl_verify($str, $MAC, $pubkeyid);
}

Avec qui a déclaré, lors de l'exécution de mon script, je reçois cette erreur:

openssl_verify(): supplied key param cannot be coerced into a public key in some/path at line X

À l'origine, j'ai écrit cette fonction pour accepter .cer certifications. Voici une explication de la différence entre tous ces différents formats. Ma compréhension .pem sont similaires à .cer, cependant, je ne pouvais pas pour la vie de me comprendre comment faire pour que mon script pour lire mon .pem fichier.

Ma question est que dois - je faire pour que ma fonction pour lire cette clé publique?

EDIT: Après quelques recherches sur Google, j'ai essayé d'utiliser file_get_contents() à un chemin particulier, mais je reçois le même message d'erreur.

Ce qui pourrait être la cause de cette erreur?