设置php.ini的路径

时间:2012-02-13 22:36:51

标签: apache php

是否可以只有一个php.ini文件,例如在webroot中(或者甚至在其外部以防止人们通过GET访问它),并快速,轻松地告诉PHP它在哪里?

我知道你可以在.htaccess中设置php.ini指令,但是可以定义一个特定的php.ini文件吗?

3 个答案:

答案 0 :(得分:11)

将此添加到您的服务器配置...

<VirtualHost 1.2.3.4:80>
PHPINIDir /path/to/new/php_ini
</VirtualHost>

确保只包含目录的路径,而不是文件的整个路径。

然后重启Apache。

检查它是否适用于phpinfo()

答案 1 :(得分:3)

在php文档中查看.user.ini部分。

  

自PHP 5.3.0起,PHP包含对.htaccess风格的INI文件的支持   每个目录。

但是除了.unser.ini解决方案之外,你可以在“附加的.ini文件解析”目录中放置一个额外的ini文件。在那里,您可以使用一个ini文件覆盖所有其他设置。在开头用zzz命名它,它将在最后解析。在不破坏其设置的情况下,您的托管服务商也可以轻松部署。

答案 2 :(得分:1)

Kolink,我怀疑你是在一个共享托管服务,在这种情况下你的主机可能正在使用一个名为suPHP的东西。在这种情况下 - 正如您所描述的 - PHPINIDir指令不起作用,在这种情况下有一个suPHP_ConfigPath指令。

在访问方面,我的DOCROOT/.htaccess

中有一个标准的mod_rewrite
RewriteEngine   On
RewriteBase     /
# if a forbidden directory or file name (starting with a . or /) then raise 404 Fatal
RewriteRule (^|/)[_.] -         [F]

这样做是禁止对._前缀的任何文件名或目录的任何请求。我有DOCROOT/_private我在这里保留这些东西:

suPHP_ConfigPath DOCROOT/_private

您需要在服务的本地设置中替换DOCROOT。在phpinfo()列表中查找 DOCUMENT_ROOT