.user.ini文件是否适用于子目录?

时间:2014-12-01 10:10:57

标签: php php-5.3

控制特定于文件夹的PHP设置的.user.ini文件是否也会下载到子文件夹中?

我正在阅读一些网站并且他们建议它确实存在(虽然没有很多关于它的信息),但我发现如果我从子文件夹运行脚本,它不会使用.user.ini文件中的设置。

我是否遗漏了某些内容,或者它只是针对脚本执行的同一文件夹?如果是这样,有没有办法让php脚本从父文件夹中查找.user.ini文件等?

2 个答案:

答案 0 :(得分:7)

是的,它应该有效。但是,我有.user.ini文件没有设置php_value的递归问题。根据php.net上的官方(和简短)文档,他们应该递归地工作(如.htaccess所做的):

  

PHP从目录开始扫描每个目录中的INI文件   请求的PHP文件,并按当前的方式工作   文档根目录(在$ _SERVER中设置[' DOCUMENT_ROOT'])。   如果PHP文件位于文档根目录之外,则只扫描其目录。

我发现Apache配置一个过多的斜杠导致.user.ini文件无法递归工作。

查看 phpinfo(),特别是 SCRIPT_FILENAME 变量。请注意两个斜杠 - 应该只有一个:

$_SERVER['SCRIPT_FILENAME'] = //home/site/public_html/phpnfo.php

原因是来自apache配置,其中包含一个过多的斜杠。

<IfModule !mod_php5.c>
    <FilesMatch \.php$>
            SetHandler "proxy:unix:/var/lib/php/php-fpm.sockets/site.sock|fcgi://localhost/"
    </FilesMatch>
    DirectoryIndex index.php index.html index.htm
</IfModule>

Apache配置不包含目录的尾部斜杠,因此不应将 fcgi:// localhost / 写为 fcgi:// localhost ,如下所示:

<IfModule !mod_php5.c>
    <FilesMatch \.php$>
            SetHandler "proxy:unix:/var/lib/php/php-fpm.sockets/site.sock|fcgi://localhost"
    </FilesMatch>
    DirectoryIndex index.php index.html index.htm
</IfModule>

更改后,重新启动Apache / php-fpm并设置。

更新:事实证明,在Apache配置中追踪斜杠错误仍然很常见,可能导致不同的错误和错误的PHP实践(例如在DocumentRoot /var/www/web/中设置)。

答案 1 :(得分:-1)

我不会阅读“少数几个网站”,而是阅读PHP手册:

  

自PHP 5.3.0起,PHP包含对.htaccess风格的INI文件的支持   每个目录的基础。 这些文件仅由。处理   CGI / FastCGI SAPI 。此功能废弃了PECL htscanner   延期。如果您使用的是Apache,请使用.htaccess文件   效果。

     

除主php.ini文件外,PHP还扫描每个文件中的INI文件   目录,从所请求的PHP文件的目录开始,和   一直到当前文档根目录(如设置中所示)   $ _ SERVER [ 'DOCUMENT_ROOT'])。如果PHP文件在   文档根目录,只扫描其目录。

http://php.net/manual/en/configuration.file.per-user.php