0

我在网站的根目录中创建了一个 php 文件(example.com/file.php):

$head = array_change_key_case(get_headers("https://example.com/somefile.zip", TRUE));
$filesize = $head['content-length'];
echo $filesize;

当我运行该文件时,我得到以下输出: 1234173 它以千字节为单位返回文件大小。我还在我的 WordPress 主题(example.com/wp-content/themes/my_theme/single.php)中使用完全相同的代码,但输出始终为 0。

为什么?(我使用此代码获取下载框中的文件大小)

使用 curl 时,我得到相同的结果。(curl 在我的根目录中可以,但它在 wp 中没有 content-length 参数)

4

2 回答 2

0

我认为这是wordpress的问题。如您所见,您的示例有一个真实的 URL。但是当你需要访问 my_theme/single.php 时,它是无效的。让我们先看看代码。single.php 用于渲染帖子。但 Post 有一个固定链接。加载 URL 时,会生成标头。但是如果我们调用single.php,它就会被阻塞。如果你有开发插件,我们可以看到 ABS_PATH。如果 ABS_PATH 未定义,则表示该文件已加载 wp-load.php。所以如果我们调用 single.php,它不包含任何 Wordpress 核心。所以这是无效的响应和问题。事实上,我们无法从主题访问特殊文件。
对于 Wordpress,调度程序函数位于 example.com/index.php。

于 2020-04-13T21:23:04.027 回答
0

解决了!

实际上问题是我的错误。我使用这样的 URL:

"/Path_to_file/file.zip"

我改为:

"Https://wxample.com/path/file.zip"

url 必须包含站点地址。

谢谢大家

于 2020-04-13T23:26:35.497 回答