Php 用于私钥和公钥的fopen()路径

Php 用于私钥和公钥的fopen()路径,php,fopen,Php,Fopen,我的问题与在文件结构中查找公钥和私钥集有关。我对这个概念很不理解,所以请容忍我 目前,要打开私钥和公钥对,我使用以下表达式: fopen(dirname(__FILE__) . '/rsa_private_key.pem', 'r'); dirname(\uuu FILE\uuuu)指向/vagrant/opencart/upload/catalog/controller/payment,执行的脚本也位于该脚本所在的位置。因此,私钥/公钥对与打开它的脚本位于同一文件夹中 我正在进行一些文件重组

我的问题与在文件结构中查找公钥和私钥集有关。我对这个概念很不理解,所以请容忍我

目前,要打开私钥和公钥对,我使用以下表达式:

fopen(dirname(__FILE__) . '/rsa_private_key.pem', 'r');
dirname(\uuu FILE\uuuu)
指向
/vagrant/opencart/upload/catalog/controller/payment
,执行的脚本也位于该脚本所在的位置。因此,私钥/公钥对与打开它的脚本位于同一文件夹中

我正在进行一些文件重组,并在路径下创建了一个新文件夹:
/vagrant/opencart/upload/keys
,我的私钥和公钥现在都位于该路径下

但是,我不太确定如何将我的
fopen()
指向它。因为我目前正在本地机器上开发,所以我现在可以使用绝对路径,但很快就会在不同的服务器上使用,所以我不能永远使用绝对路径


我的问题是,如何将
fopen()
指向此路径:
/vagrant/opencart/upload/keys

您应该做的第一件事是将私钥移到web服务器的文档根目录之外。术语“私钥”的性质告诉您,您不希望有人能够访问这些密钥!将它们放在web服务器的docroot下会不必要地暴露它们——即使您制定了保护它们的规则(例如htaccess文件),也没有理由将它们放在默认情况下可以访问的位置

根据您最终将要部署的发行版,可能会有一个标准的位置来部署这样的发行版;如果没有,我建议您定义自己的策略,例如将它们放在
/etc/opencart/keys


一旦你知道/定义了你的策略,你就有了一个可以使用的绝对路径,解决了最初的问题。

fopen(dirname(\uuuu FILE).'/../keys',r')
或完整路径
fopen('/vagrant/opencart/upload/keys',r')
但很快这将出现在不同的服务器上,所以我不能永远使用绝对路径。
您可以在配置中定义一个变量,或者在脚本中找到一个变量,该变量将具有指向脚本根目录的路径以及与之相关的所有其他路径。@Cheery the
。/../
将我们的目录向上移动两个父目录,对吗?
定义('KEY_path','…');fopen(KEY_PATH.'file.pem')@thegreencolla不,这个相对路径在任何地方都有效。但我建议在脚本初始化期间找到脚本的路径一次,并获取与之相关的其他路径。@缺少一条斜线,请检查第一条注释,我几乎立即修改了它<代码>fopen(目录名(_文件).'/../../keys',r')