我能够以正常方式读取 .xml 文件,该文件是公开可用的,并且可以通过网络浏览器访问,直到今天为止,如下所示。
$file_handle = fopen($exchanges_file_url, 'r');
但是,截至今天,我意识到我在阅读时遇到了空值。
当我使用
将输出打印到屏幕上时dd($file_handle);
stream resource @8 ▼ // app/Http/Controllers/InvoiceController.php:603
timed_out: false
blocked: true
eof: false
wrapper_data: array:2 [▼
0 => "HTTP/1.1 200 OK"
1 => "Connection: Close"
]
wrapper_type: "http"
stream_type: "tcp_socket/ssl"
mode: "r"
unread_bytes: 189
seekable: false
uri: "http://www.tcmb.gov.tr/kurlar/today.xml"
options: []
}
我的 Laravel 项目正在我的本地计算机上运行。当我将同一项目上传到网络服务器时,读取 .xml 文件没有任何问题。
使用 artisan 命令、缓存、配置等...我用 optimization:clear 逐一删除了所有内容,但没有任何改变。我关闭并打开调制解调器,更改了 IP 地址,结果仍然是相同的。当我尝试用curl读取,得到相同的结果。我还看到我的php.ini文件中的“allow_url_fopen”选项处于“on”状态。我添加了用户代理,再次得到相同的结果,没有任何改变。
你能帮我吗?
我正在等待有关我的问题的答案或替代方法的结果。
考虑到 CBro 的回复,更改 http -> https 后
$opts=array(
"ssl"=>array(
"verify_peer"=>false,
"verify_peer_name"=>false,
),
);
@fopen($exchanges_file_url, 'r',false, stream_context_create($opts));
读取具有这些设置的 xml 文件后
$context = stream_context_create(array('ssl'=>array(
'verify_peer' => false,
"verify_peer_name"=>false
)));
libxml_set_streams_context($context);
$exchanges = simplexml_load_file($exchanges_file_url);
添加ssl信息后修复错误