在共享开发环境中覆盖PHP.ini

时间:2013-07-17 00:00:04

标签: php php-ini

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

具体来说,我在我的环境中设置了XDEBUG,其他一些开发人员不想要它,所以我不想错过它们。

为此,我在互联网上扫描了如何专门为目录覆盖php.ini文件,并找到了this page on stackoverflow

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

当我查看@ “已加载的配置文件”时,它仍会显示

/etc/代替。./htdocs/

有人知道怎么了吗?

2 个答案:

答案 0 :(得分:5)

通常,不能在每个目录的基础上加载php.ini,但在某些特殊情况下(CGI / FastCGI),它是:请参阅Per-user configuration的文档

  

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

     

除了主要的php.ini文件之外,PHP还扫描每个目录中的INI文件,从所请求的PHP文件的目录开始,然后直到当前文档根目录(在$ _SERVER ['中设置] DOCUMENT_ROOT'])。如果PHP文件位于文档根目录之外,则只扫描其目录。

如果您在一台服务器上托管多个独立站点,则无论如何都应该考虑FastCGI,以保持它们分离。使用php5-fpm,可以很容易地设置许多工作池。

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

  • 使用ini_set()覆盖脚本内的更改。但是,并非所有配置指令都可以使用ini_set()进行更改。
  • 使用目录中的.htaccess文件覆盖php.ini文件中的配置。

(某些部分改编自#1438393

希望这有帮助!

答案 1 :(得分:1)

我不确定你理解这个帖子。帖子意味着如果你运行服务器并想要每个域php.ini你可以运行模块作为每个域,所以每个用户控制域php.ini但是看起来你的服务器不提供这个所以你需要我们htaccess文件覆盖php.ini设置。

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

您可以使用以下帖子执行此操作:How can I use xdebug to debug only one virtual host?