500 Error: https:// wrapper is disabled in the server configuration by allow_url_fopen=0 when using file_get_contents()

500 Error: https:// wrapper is disabled in the server configuration by allow_url_fopen=0 when using file_get_contents()

我正在尝试使用 API 在网站上显示 YouTube 视频。为了从 youtube 获取数据,我使用 file_get_contents 并解码接收到的数据,我使用 json_decode() 但 none 的功能正在运行。当我编写以下函数时:

file_get_contents('https://www.googleapis.com/youtube/v3/search?order=date&part=snippet&channelId='.$channelID.'&maxResults='.$maxResults.'&key='.$API_key.'')

我收到 500 错误。为什么我收到内部服务器错误?

并且,在错误日志文件中我得到了这个

[2020-01-24 12:32:20] production.ERROR: file_get_contents(): https:// wrapper is disabled in the server configuration by allow_url_fopen=0 (View: /home/project/project_laravel/resources/views/index.blade.php) {"exception":"[object] (ErrorException(code: 0): file_get_contents(): https:// wrapper is disabled in the server configuration by allow_url_fopen=0 (View: /home/project/project_laravel/resources/views/index.blade.php) at /home/project/project_laravel/storage/framework/views/2ef7c353b55ce1b10f018d5d4c745d8de5c15831.php:91, ErrorException(code: 0): file_get_contents(): https:// wrapper is disabled in the server configuration by allow_url_fopen=0 at /home/project/project_laravel/storage/framework/views/2ef7c353b55ce1b10f018d5d4c745d8de5c15831.php:91) [stacktrace]

在研究过程中,我在 Whosebug 上尝试了这个答案,用户建议我们启用 allow_url_fopen,但是,我的 [=] 中没有 allow_url_fopen=0 23=]。甚至在添加之后 allow_url_fopen = 1allow_url_include = 1 我仍然收到此错误。

根据这个答案 在 php.ini 中启用 allow_url_fopen 对我没有帮助。

当我再次搜索这个问题的解决方案时,我找到了这篇文章 Enabling allow_url_fopen

但是,由于我使用的是共享主机,支持团队告诉我,php中的这个功能存在安全风险,他们没有在共享服务器环境中启用这个功能,只能是当我 运行 在 vps 服务器上启用时,我自己承担风险。

因此,为了通过 API 获取 YouTube 数据,我不得不使用 cURL 函数,它对我很有效。