1

假设我有一个名为“utils.php”的文件,我在其中打开一个文件进行写入或读取:

$myfile="myfile.txt";
$fileout=fopen($myfile,'w') or die("Not opened");

现在,如果我在另一个目录下有另一个脚本,说“mydir/myscript.php”和include“myscript.php”中的“utils.php”,文件(尝试)从哪里打开?“utils.php”的路径或“myscript.php”的路径。如果它是“myscript.php”的目录,这意味着每个包含“utils.php”的脚本都会在其目录中搜索一个名为“myfile.txt”的文件,不是吗?

4

2 回答 2

0

路径被假定为相对于运行命令的脚本的目录,除非指定了绝对路径(通过在路径前加上“/”前缀),即使脚本是从其他地方调用的。因此,如果您在“/var/www/localhost/htdocs/foo.php”中指定了一个包含,则该include语句将在同一个文件夹中查找,但在包含的文件中,任何 fopen 语句都将在该 php 文件所在的任何文件夹中查找在(除非另有说明)。

于 2013-05-13T16:45:56.827 回答
0

如果您include是一个文件,该文件的内容将放在当前文件中。然后,代码将运行。让我举个例子。你有四个文件:

  • 我的目录/

    • 索引.php:

      include('../file.php');
      if ($file) {
          echo fgets($file);
          fclose($file);
      }
      
    • 文件.txt

      mydir directory
      
  • 文件.php:

    $file = @fopen('file.txt', 'r');
    
  • 文件.txt

    base level
    

如果你运行 mydir/index.php,首先,file.php 包括。然后,index.php 包含:

$file = @fopen('file.txt', 'r');
if ($file) {
    echo fgets($file);
    fclose($file);
}

之后,上面的代码就会执行。所以,输出是:

mydir directory
于 2017-06-19T10:49:05.947 回答