Похоже, вы не указали правильный формат для пути к файлу.Убедитесь, что он начинается с file://
, за которым следует абсолютный или относительный путь.Да, если вы выберете абсолютный путь, то путь к имени файла будет примерно таким: file:///absolute/path/to/keyfile.pem
, начиная с трех слешей.Для относительных путей это будет file://relative/path/to/keyfile.pem
.
. В соответствии с документацией для openssl_pkey_get_private () , ключ можно указать либо как путь к файлу, либо как строку, содержащуюфактический ключ.Только если значение начинается с file://
, оно интерпретируется как путь (URI) к файлу.В противном случае значение интерпретируется как строка, содержащая ключ в кодировке PEM.В последнем случае он ожидает стартовую строку, которую он распознает как PEM, например -----BEGIN PRIVATE KEY-----
.Вот почему вы получаете это сообщение об ошибке, ваш аргумент не начинается ни с file://
, ни с начальной строки PEM.
Если вам не нравится формат пути file://
, вы всегда можете прочитать содержимоеперед тем, как предоставить openssl_pkey_get_private()
, напишите что-то вроде:
$return = openssl_pkey_get_private(file_get_contents($path.'_priKEY.pem'));