是否可以只有一个php.ini文件,例如在webroot中(或者甚至在其外部以防止人们通过GET访问它),并快速,轻松地告诉PHP它在哪里?
我知道你可以在.htaccess
中设置php.ini指令,但是可以定义一个特定的php.ini文件吗?
答案 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
:
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 。