'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,
]
],
這樣調試很不方便啊,各位大神如何解決?求賜教。
文件所在的目錄。如果用在被包括文件中,則返回被包括的文件所在的目錄。它等價于 dirname(__FILE__)
。除非是根目錄,否則目錄中名不包括末尾的斜杠。
(PHP 4, PHP 5, PHP 7, PHP 8)
dirname — 返回路徑中的目錄部分
dirname(string $path, int $levels = 1): string
給出一個包含有指向一個文件的全路徑的字符串,本函數(shù)返回去掉文件名后的目錄名,且目錄深度為 levels 級。
注意:
dirname()
純粹基于輸入字符串操作, 它不會受實際文件系統(tǒng)和類似 ".." 的路徑格式影響。
警告
在 Windows 上,dirname() 假設當前設置的代碼頁,因此要查看具有多字節(jié)字符路徑的正確目錄名稱,必須設置匹配的代碼頁。如果 path 包含當前代碼頁無效的字符,則 dirname() 的行為是未定義的。
在其它系統(tǒng)上,dirname() 假設 path 是以 ASCII 兼容編碼進行編碼的。否則函數(shù)的行為是未定義的。
path
一個路徑。
在 Windows 中,斜線(/)和反斜線(\)都可以用作目錄分隔符。在其它環(huán)境下是斜線(/)。
levels
要向上的父目錄數(shù)量。
整型,必須大于 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.
<?php
dirname('.'); // Will return '.'.
dirname('/'); // Will return `\` on Windows and '/' on *nix systems.
dirname('\\'); // Will return `\` on Windows and '.' on *nix systems.
dirname('C:\\'); // Will return 'C:\' on Windows and '.' on *nix systems.
?>
版本 說明
7.0.0 添加可選的 levels 參數(shù)。
示例
示例 #1 dirname() 例子
<?php
echo dirname("/etc/passwd") . PHP_EOL;
echo dirname("/etc/") . PHP_EOL;
echo dirname(".") . PHP_EOL;
echo dirname("C:\\") . PHP_EOL;
echo dirname("/usr/local/lib", 2);
以上示例的輸出類似于:
/etc
/ (or \ on Windows)
.
C:\
/usr