php.ini和.htaccess有什么区别?

9
假设我想要改变这个值的话,

php_value post_max_size 20M in .htaccess

post_max_size 20M in php.ini

两者都可以执行同样的操作。那么php.ini.htaccess之间有什么区别呢?


如果您正在单个主机上工作,则差异微小。对于那些托管许多网站的系统(例如共享Web主机),这些文件存在于两个不同的位置,因此可以按站点配置配置选项,而无需授予用户访问某个文件的权限,该文件将a)影响其他用户b)具有危险的权限。 - antik
5个回答

15

整个服务器都会使用 php.ini 中的配置,而只有当请求进入包含 .htaccess 文件的目录或子目录时才会使用 .htaccess 文件中的配置。

因此,您可以在 php.ini 中设置全局或默认配置,并在 .htaccess 文件中为各个目录设置特定配置。此外,网络托管提供商通常不允许访问 php.ini 或服务器配置,但仅允许使用 .htaccess 文件。

但请注意,每个 PHP 配置都受到配置模式的限制。


1
+1,没错。是否有可能也有针对每个目录的php.ini文件呢?或者这只在IIS上有? - Pekka

3

PHP.ini 中设置的配置值适用于整个服务器,会影响运行在该服务器上的所有站点。而 .htaccess 中设置的配置值仅适用于单个站点。


在PHP.ini中配置错误,人们实际上可以访问您的.htaccess文件。正如提到的那样,如果您的配置不是特定于站点的,请在PHP.ini中声明它们;如果您想要一个特定的站点具有特定的配置,请在.htaccess中定义它们。 - Zaje

2
这取决于PHP在您的服务器上的安装方式;如果它作为Apache模块安装,则会使用.htaccess文件来发出PHP指令,因为Apache会读取和执行.htaccess文件。
如果您将PHP运行为CGI,则会使用php.ini文件,因为.htaccess中的任何内容都不会影响您的PHP。
您可以通过创建一个包含phpinfo()函数的PHP文件来检查PHP的安装方式。
这仅适用于特定目录的本地覆盖;无论PHP如何安装,它都会读取您的主要php.ini文件。

1

Apache是HTTP服务器。它通过放置在网站/应用程序根目录中的.htaccess文件进行配置,这意味着每个应用程序都有自己的.htaccess文件。

php.ini是影响PHP功能的最快捷方式。


1

这不是对你问题的回答,但有一个我自己也不知道的有趣小细节:在Windows上使用PHP时,可以在注册表中设置每个目录的设置。来自手册

通过Windows注册表更改PHP配置

在Windows上运行PHP时,可以使用Windows注册表按目录修改配置值。配置值存储在注册表键HKLM\SOFTWARE\PHP\Per Directory Values中,对应于路径名的子键中。例如,目录c:\inetpub\wwwroot的配置值将存储在键HKLM\SOFTWARE\PHP\Per Directory Values\c\inetpub\wwwroot中。该目录的设置将对从此目录或其任何子目录运行的任何脚本生效。键下的值应具有PHP配置指令的名称和字符串值。值中的PHP常量不会被解析。但是,只能设置可在PHP_INI_USER中更改的配置值,不能设置PHP_INI_PERDIR值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接