'transport' => 'ssl',
'context' => [
'ssl' => array(
'local_cert' => '/path/to/your/server.crt',
'local_pk' => '/path/to/your/server.key',
'verify_peer' => false,
'allow_self_signed' => true,
)
],
按照文档配置后,如果写绝对路径(在服务器上),没问题。
但是我本地的路径结构跟服务器不一样,写相对路径 ,就会报错:
Error: write EPROTO 140612453044792:error:10000410:SSL routines:OPENSSL_internal:SSLV3_ALERT_HANDSHAKE_FAILURE:../../../../src/third_party/boringssl/src/ssl/tls_record.cc:594:SSL alert number 40
140612453044792:error:1000009a:SSL routines:OPENSSL_internal:HANDSHAKE_FAILURE_ON_CLIENT_HELLO:../../../../src/third_party/boringssl/src/ssl/handshake.cc:644:
'transport' => 'ssl',
'context' => [
'ssl' => [
'local_cert' => './ssl/ppv2.pem',
'local_pk' => './ssl/ppv2.key',
'verify_peer' => false,
]
],
这样调试很不方便啊,各位大神如何解决?求赐教。
大哥,php咋学的,PHP自带的
__DIR__
常量获取当前文件目录__DIR__
文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。它等价于
dirname(__FILE__)
。除非是根目录,否则目录中名不包括末尾的斜杠。dirname
dirname — 返回路径中的目录部分
说明
给出一个包含有指向一个文件的全路径的字符串,本函数返回去掉文件名后的目录名,且目录深度为 levels 级。
dirname()
纯粹基于输入字符串操作, 它不会受实际文件系统和类似 ".." 的路径格式影响。在 Windows 上,dirname() 假设当前设置的代码页,因此要查看具有多字节字符路径的正确目录名称,必须设置匹配的代码页。如果 path 包含当前代码页无效的字符,则 dirname() 的行为是未定义的。
在其它系统上,dirname() 假设 path 是以 ASCII 兼容编码进行编码的。否则函数的行为是未定义的。
参数
一个路径。
在 Windows 中,斜线(/)和反斜线(\)都可以用作目录分隔符。在其它环境下是斜线(/)。
要向上的父目录数量。
整型,必须大于 0。
返回值
返回 path 的父目录。如果在 path 中没有斜线,则返回一个点('.'),表示当前目录。否则返回的是把 path 中结尾的 /component(最后一个斜线以及后面部分)去掉之后的字符串。
Be careful when using this function in a loop that can reach the top-level directory as this can result in an infinite loop.
更新日志
7.0.0 添加可选的 levels 参数。
示例 #1 dirname() 例子
以上示例的输出类似于:
不想用dirname或者__DIR__,可以用框架的方法base_path("ssl")