Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“如果PHP文件位于文档根目录之外,则只扫描其目录”是什么意思?_Php_Php Ini - Fatal编程技术网

“如果PHP文件位于文档根目录之外,则只扫描其目录”是什么意思?

“如果PHP文件位于文档根目录之外,则只扫描其目录”是什么意思?,php,php-ini,Php,Php Ini,我正在阅读关于php.ini文件读取流的内容。我在php.net网站上读到过,但有一件事我不明白,那就是在第二段的末尾 In case the PHP file is outside the document root, only its directory is scanned 这意味着什么?当PHP文件位于文档根目录之外时,如果文件不在文档根目录中=您为网站放置文件的根目录中,则只扫描文件所在的目录 因此,他们将从特定PHP文件的文件夹开始,然后通过每次向上扫描一个文件夹来扫描每个文件夹,直

我正在阅读关于php.ini文件读取流的内容。我在php.net网站上读到过,但有一件事我不明白,那就是在第二段的末尾

In case the PHP file is outside the document root, only its directory is scanned
这意味着什么?

当PHP文件位于文档根目录之外时,如果文件不在文档根目录中=您为网站放置文件的根目录中,则只扫描文件所在的目录

因此,他们将从特定PHP文件的文件夹开始,然后通过每次向上扫描一个文件夹来扫描每个文件夹,直到文档根。如果文件不在文档根目录中,他们只检查文件所在的目录

因此有两种选择:

一,。文件位于根目录中 或 2.文件不在根目录中

如果文件位于根目录:中,他们将搜索从php文件目录开始的.ini文件,该文件名为。然后他们通过每次向上搜索和扫描,直到文档根


如果文件不在根目录中:那么他们将只在名为的php文件的目录中搜索.ini文件。

只是为了澄清除的答案之外的一些事情

服务器的默认php.ini文件(例如/path/to/default/ini/php.ini)将始终被扫描,无论php文件本身位于何处。之后会发生什么取决于PHP文件是否存储在文档根路径中

文档中的根路径 假设您有一个PHP文件保存在/path/to/doc/root/other/dir/file.PHP

服务器将在以下目录中查找ini文件:

/path/to/root/other/dir /路径/到/根/另一个 /路径/到/根 如果在这些位置中的任何位置发现ini文件,将扫描这些文件以及默认ini文件

外部文档根路径 假设您有一个PHP文件保存在/path/outside/doc/root/file.PHP

服务器将在以下目录中查找:

/路径/外部/文档/根
如果在此位置(即/path/outside/doc/root/php.ini)找到一个ini文件,它将与默认的ini文件一起被扫描。

这非常清楚:调用php文件时,它会自动搜索php文件文件夹中的.ini文件配置,也会搜索到根目录下的所有父目录中的.ini文件配置。但是,当然,如果文件位于根层次结构之外,它不会在那里扫描,并且只处理文件的文件夹。您的意思是,如果在根中找不到ini文件,那么服务器将只扫描服务器上默认设置的php.ini文件所在的目录?否,每个.ini文件都将在文件目录到根目录之间进行扫描。它并不真正搜索特定的ini文件,如果有一个,它会被扫描,如果有几个,它们都会被扫描。但是,当然,如果文件夹在服务器根目录的文件夹层次结构之外,他不会遍历文件夹的层次结构,他不知道在哪里停止no。如果使用调用php文件,它将搜索配置文件.ini。它在文件目录和父目录中搜索,直到文档根目录。如果php文件不在文档根文件树中,它只扫描php文件的目录。因此,它不是关于找不到ini文件,而是关于调用php文件时“搜索”一个.ini文件,以及他们在哪里“搜索”你的评论的第一句话是正确的。在那之后,我们有了一个误会。它不是关于是否没有找到ini文件,而是在请求文件的文件夹中搜索该文件。我会修改我的答案以便解释得更清楚。坡,我真的不知道。我认为它将使用服务器默认的php.ini文件@SunnyKhan@SunnyKhan-在您在问题中链接的页面上,除了主php.ini文件外,还显示。是的,它确实使用了服务器的默认php.ini文件,这是一个很好的答案。在这两种情况下,都将加载服务器的默认ini文件,如果请求的php文件位于根目录之外,则ini文件将仅在该目录中扫描,而不是在父目录或其他目录中。如果请求的php文件位于根目录内,则ini文件将首先在请求的php文件所在的文件夹中进行扫描,并且仍将在上一级父目录中扫描ini文件,直到根目录。@SunnyKhan yep,找到了!:还有一件事我想问一下,php.ini只在两种情况下被读取。1当服务器启动时。2当对请求数据执行cgi脚本时。我是对的吗?@SunnyKhan我不太确定,抱歉,我只将PHP用作apache模块,而不是CGI。您问题中链接的页面具有ini指令user_ini.cache_ttl-控制重新读取用户ini文件的频率,这表明在访问相关PHP文件时加载了用户ini文件,并且ini文件被缓存的时间是指令默认设置的300秒。如果一个PHP文件是
使用相同ini文件的访问不一定是相同的PHP文件,可能是同一目录中的另一个PHP文件,它将从缓存加载ini文件。不过我可能错了@SunnyKhan AFAIK,服务器默认ini文件仅在服务器重新启动时加载。