You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP相对路径实例化$pemkey失败,无法加载签名私钥

解决PHP加载私钥文件找不到的问题

问题原因

你代码里写的file:///licensePrivateKey.pem是错误的路径格式——三个斜杠的file:///指向系统根目录,而非脚本所在的folder目录,导致openssl无法定位到目标文件。另外,PHP的工作目录可能和脚本所在目录不一致,直接用相对文件名也可能出现路径歧义。

解决方案

方法1:修正相对路径写法

可以调整file://协议的路径,或者直接省略file://(openssl_pkey_get_private支持直接传入文件名):

// 写法1:用正确的相对路径file协议
$pemkey = openssl_pkey_get_private("file://./licensePrivateKey.pem");
// 写法2:直接传入文件名(更简洁)
$pemkey = openssl_pkey_get_private("licensePrivateKey.pem");

方法2:用绝对路径拼接(最可靠)

用__DIR__常量获取当前脚本所在的绝对目录,再拼接私钥文件名,彻底规避工作目录的影响:

$pemPath = __DIR__ . '/licensePrivateKey.pem';
$pemkey = openssl_pkey_get_private($pemPath);
// 或者保留file://协议也可以
$pemkey = openssl_pkey_get_private("file://$pemPath");

额外检查项

  • 确认licensePrivateKey.pem文件名无拼写错误,Linux系统需注意大小写区分。
  • 确保PHP进程有该文件的读取权限:Linux下可设置文件权限为644,Windows下需给IIS/PHP运行用户分配读取权限。

内容的提问来源于stack exchange,提问作者Akashiro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 17:15:15