问题描述

假设我想更改 Wordpress 网站的最大上传上限,并给出以下值:

wp-config.php:128MB php.ini:256MB .htaccess:64MB

那么 Wordpress 在需要时处理哪个优先级呢?

最佳解决方案

您的问题不清楚您在每个文件中的变化是什么,但我认为在每种情况下都是 upload_max_filesize PHP 设置。

一般来说,设置将按此顺序应用,每个 over-riding 的前一个值:

  1. php.ini 中

  2. .htaccess 中的 Apache 指令

  3. 致电 ini_set()

但是,该设置定义为 PHP_INI_PERDIR,如本页内容所述,无法使用 ini_set 进行设置,因此 wp-config.php 无法更改。所以在你给出的这个例子中,它将采用.htaccess 的值为 64MB 。

您可以通过在代码中的某个地方运行 echo ini_get('upload_max_filesize'); 来验证这一点。

请注意,还有其他地方的值可以设置,我以前没有列出,如 per-user php.ini 文件和 other Apache configuration contexts 。此外,这些 can be disabled 中的一些,所以如果您的服务器未设置为允许.htaccess 中的 over-rides,您将无法在其中设置值。

还要注意,Wordpress 包括一些自己的配置变量,它们以不同的方式与 PHP 配置进行交互。例如,WP_MEMORY_LIMIT 将在启动时尝试提升 PHP memory_limit 设置,但具有 code which checks and never lowers it 。这不是一般规则,不同的设置会有所不同。

次佳解决方案

基本上考虑所有三个文件。

WordPress /您的服务器将按以下顺序检查:

wp-config.php > .htaccess > php.ini

如果”higher level”(链中较后) 中的某些内容限制了您的值,则前一个值将被忽略或覆盖。如果一条链丢失,.htaccess 中的值为例,将使用下一个更高的值。

在您的示例中,.htaccess 会将 max_upload_size 限制为 64 MB,尽管您的服务器最高可达 256 MB,WordPress 也可以首先接受高达 128 MB 的文件大小。

您还可以通过.htaccess 文件设置不同的限制,并通过这样做覆盖 php.ini 的值,以使其不再是主导的值。这可以在很多托管环境中工作,所以很有可能以这种方式提高或降低 max_upload_size

如果您有一个更严格配置的主机/服务器,可能会禁用从 php.ini 覆盖设置的选项。在这种情况下,从.htaccess 覆盖 max_upload_size 不起作用,所以这可能是一个限制因素。

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。