gpt4 book ai didi

php - 为什么 stream_context_set_option 的文件路径很奇怪?

转载 作者:太空宇宙 更新时间:2023-11-03 13:47:54 24 4
gpt4 key购买 nike

我在以下目录结构中有一些 PHP 脚本。

ROOT  
---COMMON
------(Login.php)
---APPSERVICE
------(NotificationService.php)
------NOTIFICATION_CERTIFICATES
---------(ck.pem)

NotificationService.php 中,我的 "notifyUser()" 函数中有以下行:

stream_context_set_option($ctx, 'ssl', 'local_cert', **'NOTIFICATION_CERTIFICATES/ck.pem'**);

但是,当我在我的 Login.php 脚本中包含 NotificationService.php 并尝试调用 notifyUser() 时,它给我这个错误:

stream_socket_client(): SSL operation failed with code 1. OpenSSL Error messages:
error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure in [my file path]

但是,如果我从与 NotificationService.php 相同的目录中的脚本调用 notifyUser(),则没有错误。为什么上面的粗线似乎受到调用函数的脚本的影响,而不是定义函数的脚本的位置?

最佳答案

相对路径是根据 include_path 解析的环境;这通常包括在每个请求开始时建立的当前工作目录。

如果你想确保路径总是相对于正在运行的当前脚本:

// NotificationService.php

$cert = __DIR__ . '/NOTIFICATION_CERTIFICATES/ck.pem';
stream_context_set_option($ctx, 'ssl', 'local_cert', $cert);

关于php - 为什么 stream_context_set_option 的文件路径很奇怪?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25684155/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com