在共享开发环境中重写PHP.ini

在共享开发环境中重写PHP.ini,php,php-ini,Php,Php Ini,我的开发环境与我的初创公司的其他开发人员共享,并安装在Rackspace上。php.ini文件位于/etc/文件夹中,我相信这是一个集中的位置,每个其他开发人员的开发环境设置都是从这里配置的。我想专门为我自己定制这个php.ini文件,而不必在/etc/位置进行 具体地说,我正在我的环境中设置XDEBUG,其他一些开发人员不需要它,所以我不想对它们进行bug:) 为了做到这一点,我浏览了互联网,了解如何专门为一个目录覆盖php.ini文件,并发现 然后,我简单地将php.ini文件复制粘贴到我的

我的开发环境与我的初创公司的其他开发人员共享,并安装在Rackspace上。php.ini文件位于
/etc/
文件夹中,我相信这是一个集中的位置,每个其他开发人员的开发环境设置都是从这里配置的。我想专门为我自己定制这个
php.ini
文件,而不必在
/etc
/位置进行

具体地说,我正在我的环境中设置XDEBUG,其他一些开发人员不需要它,所以我不想对它们进行bug:)

为了做到这一点,我浏览了互联网,了解如何专门为一个目录覆盖php.ini文件,并发现

然后,我简单地将php.ini文件复制粘贴到我的htdocs文件夹中,然后简单地回显
phpinfo()
(我在我的一个控制器中回显了这个文件,(使用Zend))。index.php文件位于htdocs文件夹中

当我查看@“加载的配置文件”时,它仍然会读取

/etc/
而不是。
/htdocs/


有人知道怎么回事吗

我不确定你是否理解这篇文章。这篇文章的意思是,如果您运行服务器并想要一个每域php.ini,那么您可以将模块作为每域运行,这样每个用户都可以控制该域php.ini。但是,您的服务器似乎不提供此功能,因此您需要使用htaccess文件来覆盖php.ini设置

通过重写,这并不意味着您可以更改目录,这意味着可能会添加模块或添加错误报告等


你可以用这篇文章来做到这一点:

我不确定你是否理解这篇文章。这篇文章的意思是,如果您运行服务器并想要一个每域php.ini,那么您可以将模块作为每域运行,这样每个用户都可以控制该域php.ini。但是,您的服务器似乎不提供此功能,因此您需要使用htaccess文件来覆盖php.ini设置

通过重写,这并不意味着您可以更改目录,这意味着可能会添加模块或添加错误报告等


您可以通过使用本文来实现这一点:

一般来说,不可能在每个目录的基础上加载
php.ini
,但在某些特殊情况下(CGI/FastCGI),它是:有关详细信息,请参阅文档

自PHP5.3.0以来,PHP在每个目录的基础上包括对.htaccess样式INI文件的支持。这些文件仅由CGI/FastCGI SAPI处理。此功能淘汰了PECL htscanner扩展。如果您使用的是Apache,请使用.htaccess文件以获得相同的效果

除了主php.ini文件外,php还扫描每个目录中的ini文件,从请求的php文件的目录开始,一直扫描到当前文档根(如$\u服务器['document\u root']中设置的)。如果PHP文件位于文档根目录之外,则只扫描其目录

如果你在一台服务器上托管几个独立的站点,你应该考虑FASTCGI,以保持它们分开。使用

php5 fpm
可以非常轻松地设置许多工作人员池

请注意,仅在用户ini文件中设置有限的ini选项子集。 正如您所说,您无法控制服务器,可能的解决办法是:

  • 用于覆盖脚本中的更改。但并非所有的配置指令都可以使用
    ini\u set()
    进行更改
  • 使用目录中的.htaccess文件覆盖
    php.ini
    文件中的配置
(某些部分改编自)


希望这有帮助

一般来说,无法按目录加载
php.ini
,但在某些特殊情况下(CGI/FastCGI),是这样的:有关详细信息,请参阅文档

自PHP5.3.0以来,PHP在每个目录的基础上包括对.htaccess样式INI文件的支持。这些文件仅由CGI/FastCGI SAPI处理。此功能淘汰了PECL htscanner扩展。如果您使用的是Apache,请使用.htaccess文件以获得相同的效果

除了主php.ini文件外,php还扫描每个目录中的ini文件,从请求的php文件的目录开始,一直扫描到当前文档根(如$\u服务器['document\u root']中设置的)。如果PHP文件位于文档根目录之外,则只扫描其目录

如果你在一台服务器上托管几个独立的站点,你应该考虑FASTCGI,以保持它们分开。使用

php5 fpm
可以非常轻松地设置许多工作人员池

请注意,仅在用户ini文件中设置有限的ini选项子集。 正如您所说,您无法控制服务器,可能的解决办法是:

  • 用于覆盖脚本中的更改。但并非所有的配置指令都可以使用
    ini\u set()
    进行更改
  • 使用目录中的.htaccess文件覆盖
    php.ini
    文件中的配置
(某些部分改编自)


希望这有帮助

简单操作:你重启了apache吗?哦,不,我想我做不到……因为我无法控制它。链接的S.O.页面列出了很多每目录ini文件的标准。告诉我们你已经检查了每一个,以及你是如何检查的。好吧,这是针对xdebug的,所以我认为它需要在脚本开始执行之前设置好?简单的操作:你重新启动了apache吗?哦,不,我不认为我可以这样做…因为我无法控制它。链接的S.O.页面列出了很多每个目录ini文件的标准。告诉我们您已经检查了每一个,以及您是如何检查的。好吧,这是针对xdebug的,所以我认为需要在脚本开始执行之前设置它?我认为添加ini_set()不会有帮助,因为我正在尝试加载xdebug(或者会)。但是htdocs选项似乎很有趣…将尝试:)-1完全错误。php可以在每个目录的基础上加载多个ini文件。@chris,您还没有按照对话进行操作。耶