控制特定于文件夹的PHP设置的.user.ini
文件是否也会下载到子文件夹中?
我正在阅读一些网站并且他们建议它确实存在(虽然没有很多关于它的信息),但我发现如果我从子文件夹运行脚本,它不会使用.user.ini
文件中的设置。
我是否遗漏了某些内容,或者它只是针对脚本执行的同一文件夹?如果是这样,有没有办法让php脚本从父文件夹中查找.user.ini
文件等?
答案 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文件在 文档根目录,只扫描其目录。