问题描述
假设我想更改 Wordpress 网站的最大上传上限,并给出以下值:
wp-config.php:128MB php.ini:256MB .htaccess:64MB
那么 Wordpress 在需要时处理哪个优先级呢?
最佳解决方案
您的问题不清楚您在每个文件中的变化是什么,但我认为在每种情况下都是 upload_max_filesize
PHP 设置。
一般来说,设置将按此顺序应用,每个 over-riding 的前一个值:
-
php.ini 中
-
.htaccess 中的 Apache 指令
-
致电
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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。