调试后,我们发现wp_max_upload_size
函数返回1MB。这个u_bytes
和p_bytes
与预期一致,等于我们uploads.ini
文件,但应用upload_size_limit
筛选器将大小更改为1MB,即问题出现在:
return apply_filters( \'upload_size_limit\', min( $u_bytes, $p_bytes ), $u_bytes, $p_bytes );
A
upload_size_limit_filter
定义于
wp-includes/ms-functions.php
并连接到执行
only for a multisite installation. (接线代码位于
wp-includes/ms-default-filters.php
. 文件名具有
ms
前缀代表
multisite):
// this function runs only for a multisite installation of wordpress
function upload_size_limit_filter( $size ) {
$fileupload_maxk = KB_IN_BYTES * get_site_option( \'fileupload_maxk\', 1500 );
if ( get_site_option( \'upload_space_check_disabled\' ) ) {
return min( $size, $fileupload_maxk );
}
return min( $size, $fileupload_maxk, get_upload_space_available() );
}
追踪代码路径,我们发现
fileupload_maxk
相等的
1536000
这就是问题的根源。这个
fileupload_maxk
值是从MySQL获取的。
继续,我们可以在MySQL数据库中看到这一点。The wp_sitemeta
table only exists for a multisite installation:
mysql> select * from wp_sitemeta where meta_key = \'fileupload_maxk\';
+---------+---------+-----------------+------------+
| meta_id | site_id | meta_key | meta_value |
+---------+---------+-----------------+------------+
| 7 | 1 | fileupload_maxk | 1500 |
+---------+---------+-----------------+------------+
1 row in set (0.00 sec)
所以解决这个问题的方法是更新这个值。可以使用
wp-cli 如下所示。我们正在使用多站点安装,因此必须使用
wp site
命令:
bash-5.0# wp site option update fileupload_maxk 10000 --allow-root
Success: Updated \'fileupload_maxk\' site option.
这将更新MySQL中的条目,问题已得到修复。简而言之,似乎
fileupload_maxk
似乎并不广为人知。我们在Google上搜索原始查询时,没有一次找到它。
Here 是另一个答案
fileupload_maxk
.