Apache 将路径设置为php.ini

Apache 将路径设置为php.ini,apache,php,Apache,Php,是否可以只在webroot中(甚至在webroot之外,以防止人们通过GET访问它)使用一个php.ini文件,并快速、轻松地告诉php它在哪里 我知道您可以在.htaccess中设置php.ini指令,但是否可以定义要使用的特定php.ini文件?将此添加到服务器配置中 <VirtualHost 1.2.3.4:80> PHPINIDir /path/to/new/php_ini </VirtualHost> PHPINIDir/path/to/new/php_in

是否可以只在webroot中(甚至在webroot之外,以防止人们通过GET访问它)使用一个php.ini文件,并快速、轻松地告诉php它在哪里


我知道您可以在
.htaccess
中设置php.ini指令,但是否可以定义要使用的特定php.ini文件?

将此添加到服务器配置中

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

PHPINIDir/path/to/new/php_ini
确保只包含目录的路径,而不是文件的整个路径

然后重新启动Apache

检查它是否与
phpinfo()

一起工作。请查看php文档中的部分

从PHP5.3.0开始,PHP就包括对.htaccess样式INI文件的支持 a以目录为基础


但是除了.unser.ini解决方案之外,您还可以在“additional.ini files parsed”目录中放置一个额外的ini文件。在那里,您可以使用一个ini文件覆盖所有其他设置。在开始时用zzz命名,最后将对其进行解析。这对于您的宿主来说也很容易部署,而不会破坏他的设置

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

在访问方面,我在我的
DOCROOT/.htaccess
中有一个标准的mod_重写:

RewriteEngine   On
RewriteBase     /
# if a forbidden directory or file name (starting with a . or /) then raise 404 Fatal
RewriteRule (^|/)[_.] -         [F]
这样做的目的是禁止任何以
为前缀的文件名或目录请求。我有一个
DOCROOT/\u private
为我保存这些东西:

suPHP_ConfigPath DOCROOT/_private

您将需要在服务上用本地设置替换DOCROOT。在
phpinfo()
列表中查找DOCUMENT\u ROOT

Hmm。。。这样可以,但我没有访问该服务器配置的权限。@Kolink如果您没有访问权限,请咨询您的主机。他们可能已经设置了一些东西。工作方式如下:配置文件(php.ini)路径/etc/php/7.0/apache2加载的配置文件/etc/php/7.2/apache2/php.ini扫描此目录以查找其他.ini文件/etc/php/7.0/apache2/conf.d,其中仍加载7.0。。。。。所以它不起作用,事实上,在这种情况下,我使用的是VDS。不管怎样,结果证明suPHP_ConfigPath就是答案(我问过主机)?不是我见过的首字母缩略词。如果您指的是VPS,那么您究竟为什么将其配置为SUPPP?。使用SUPPP的唯一逻辑原因是启用基于UID的访问控制,以保持共享帐户之间的分离。虚拟专用服务器。老实说,我不在乎它是如何工作的,只要它能工作并且按照我告诉它的去做。只要你知道你的用户会看到(轻微的)性能下降,你的虚拟机每秒最多会有5个URI脚本请求。这只是为了开发目的。在上线之前,它将被移动到一个适当的专用系统;)您没有引用一个非常重要的部分:由于PHP5.3.0,PHP支持每个目录的配置INI文件。这些文件仅由CGI/FastCGI SAPI处理