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

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

直到最近有一个全球性的php.ini文件已经很好,但最近我们的开发人员已经请求了一些php.ini中的设置,我不想在全局设置。

我敢肯定,我听说你可以设置每个站点的 php.ini文件,但不知道如何去做这件事。

有人可以指出我在正确的方向如何做到这一点?

你可以放置在你的php.ini中的大部分设置也可以放在.htaccess或者这个站点的apacheconfiguration中。 例如我的一个虚拟主机在.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 

您也可以在Apacheconfiguration文件(httpd.conf / apache.conf)中指定configuration设置。 在你的情况下,你可以在上下文中指定configuration值。

以下示例应该为虚拟主机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> 

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

 <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/en/configuration.changes.php

另一个build议是使用mod-fastcgi或mod-fcgi,它们将PHP作为独立的独立守护进程运行。 然后,为每个网站,你可以定义一个单独的用户和php.iniconfiguration文件。

另一个选项是suPHP ,它允许你为每个VirtualHost定义一个php.ini文件。 它也允许你为每个VirtualHost指定一个PHP版本。