为啥 .htaccess 或 php.ini 覆盖 /etc/php.ini 不起作用?

Posted

技术标签:

【中文标题】为啥 .htaccess 或 php.ini 覆盖 /etc/php.ini 不起作用?【英文标题】:Why does .htaccess or php.ini overriding /etc/php.ini not work?为什么 .htaccess 或 php.ini 覆盖 /etc/php.ini 不起作用? 【发布时间】:2013-12-27 07:13:32 【问题描述】:

我想在不修改 /etc/php.ini 的情况下调整 post_max_size 和 upload_max_filesize

PHP 版本 5.3.27 根目录:/var/www/html/my_site

这是我做过的事情:

我在html目录下添加了php.ini(没用)

memory_limit = 96M post_max_size = 64M upload_max_filesize = 64M

我在html目录下添加了.htaccess文件(没用)

php_value upload_max_filesize 64M php_value post_max_size 64M

我还将它们都添加到 /my_site 目录下,但它们都不起作用

每次添加它们时,我都会重新启动服务器

我也把php.ini改成了php5.ini

我也变了

php_value

php5_value

调整权限问题

出了什么问题?

【问题讨论】:

在您的尝试中收到任何错误消息?你是在运行 mod_php 还是运行 cgi/fcgi 版本? 我已经检查了日志中的错误说 PHP 警告:POST Content-Length of 15799451 bytes 超出了 Unknown on line 0 中 8388608 bytes 的限制,referer: 我如何知道我运行的是 mod_php 还是 cgi/fcgi 版本? 您可以通过在 php 文件中使用 ini_get(flag_name) 来检查 .htaccess 中的更改是否生效。例如:echo ini_get('upload_max_filesize') 将输出 upload_max_filesize 的值。 【参考方案1】:

许多共享主机限制了您可以在 .htaccess 中使用的标志,upload_max_filesize/post_max_size 是常见的。如果您使用的是共享主机,请联系技术支持以确认这一点。

【讨论】:

那些标志是什么?你能更具体一点吗?谢谢! 由服务器管理员决定他们如何限制 apache/php 环境的自定义。如果您尝试允许在您的网站上进行大量上传,upload_max_filesizepost_max_size 是您想要的标志(可能还有 max_execution_timemax_input_time),但您作为他们服务的用户通常不是出于安全原因,允许您自己在 .htaccess 文件中更改它们。如果您提出要求,它们通常会为您增加这些值。 我们这里有自己的服务器,可以直接与系统管理员联系以更改内容。当我们增加 /etc/php.ini 中的 upload_max_filesize 和 post_max_size 的值时,结果很好,但由于我们不想改变主文件,我们正在寻找一种方法来覆盖它。您对我们的系统管理员可以做些什么来帮助我有什么建议吗?? 系统管理员不是花钱来修复这样的东西吗? 当然,在这种情况下,听起来这些选项在 .htaccess 中受到限制。让您的系统管理员按照documentation 在您的httpd.conf 文件中使用AllowOverride All 指令。这将使您的 .htaccess 中的这些设置生效。

以上是关于为啥 .htaccess 或 php.ini 覆盖 /etc/php.ini 不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

httpd.conf、php.ini 和 .htaccess 之间的区别

如何在 .htaccess 中输入多个 PHP 值?

使用.htaccess修改php.ini的配置

为啥 PHP 仍然显示错误?

为啥 PHP 仍然显示错误?

PHP配置指令作用域