如何使用NameVirtualHosts在LAMP服务器上设置每个站点的php.ini文件?


10

我有一个LAMP服务器,使用NameVirtualHosts服务许多不同的网站。

直到最近,有了全局php.ini文件还是不错的,但是最近,我们的一位开发人员要求在php.ini中进行一些我不希望在全局范围内进行的设置。

我敢肯定,我听说过您可以在每个站点上设置php.ini文件,但不知道如何执行此操作。

有人可以为我指出正确的方向吗?

Answers:


14

您将要放置在php.ini中的大多数设置也可以放置在该站点的.htaccess或apache配置中。例如,我的一个虚拟主机在.htaccess中有此主机

    php_value display_errors 1
    php_value register_globals 0
    php_value short_open_tag 0
    php_value magic_quotes_runtime 0
    php_value magic_quotes_gpc 0
    php_value session.name "PHPSESSID_SITEBLAH"
    php_value session.gc_maxlifetime 57600
    php_value session.gc_probability 1
    php_value session.gc_divisor 500

这似乎对我不起作用。为了允许此操作,是否需要在主php.ini中设置某种指令?
布伦特

1
必须在APache配置中设置“ AllowOverride选项”或“ AllowOverride全部”,这样才能起作用。
09年

例如,其中的值会apache.conf覆盖php.ini文件中的值,还是以其他方式覆盖?
2012年

7

您还可以在Apache配置文件(httpd.conf / apache.conf)中指定配置设置。在您的情况下,您可以在上下文中指定配置值。

以下示例应将虚拟主机example.com的upload_max_filesize设置为10M。

<VirtualHost *>
    ServerName example.com
    DocumentRoot /path_to_docroot
    php_value upload_max_filesize 10M
    php_admin_flag allow_url_fopen on
</VirtualHost>

如果您不想为整个网站设置此值,而是要为应用程序所在的一个特定目录设置此值,则可以在中指定值。

<VirtualHost *>
   ServerName example.com
   DocumentRoot /path_to_docroot
  <Location /testApp/>
     php_value upload_max_filesize 10M
     php_admin_flag allow_url_fopen on
  </Location>
</VirtualHost>

有关更多说明,请参见http://php.net/manual/zh/configuration.changes.php


+1很奇怪,没有其他办法。本地htaccess,php ini文件,这些都不起作用。
boot13

谢谢!也许有人遇到了需要覆盖mod-security参数的问题。这仅适用于vhost级别,而不适用于DIRECTORY或LOCATION级别。原因是在读取目录或位置块之前已配置了mod-sec。
ora-600

1

另一个建议是使用mod-fastcgi或mod-fcgi,它们将PHP作为单独的独立守护程序运行。然后,对于每个网站,您可以定义一个单独的用户和php.ini配置文件。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.