打开文件php

打开文件php,php,file,path,include,dependencies,Php,File,Path,Include,Dependencies,假设我有一个名为“utils.php”的文件,我在其中打开一个文件进行写入或读取: $myfile="myfile.txt"; $fileout=fopen($myfile,'w') or die("Not opened"); 现在,如果我在另一个目录下有另一个脚本,请说“mydir/myscript.php”,并在“myscript.php”中包含“utils.php”,文件(尝试)从哪里打开?“utils.php”的路径或“myscript.php”的路径。 如果它是“myscript.p

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

$myfile="myfile.txt";
$fileout=fopen($myfile,'w') or die("Not opened");
现在,如果我在另一个目录下有另一个脚本,请说“mydir/myscript.php”,并在“myscript.php”中包含
“utils.php”,文件(尝试)从哪里打开?“utils.php”的路径或“myscript.php”的路径。

如果它是“myscript.php”的目录,这意味着包含“utils.php”的每个脚本都将在其目录中搜索名为“myfile.txt”的文件,不是吗?

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

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

  • mydir/

    • index.php:

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

      mydir directory
      
      base level
      
  • file.php:

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

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

$file = @fopen('file.txt', 'r');
if ($file) {
    echo fgets($file);
    fclose($file);
}
之后,将执行上述代码。因此,输出为:

mydir directory

你为什么不试试看呢?我还不能完全确定我是否理解-所以我的文件将从mydir/中包括在示例中?
include
是一个命令
fopen
是一个命令。如果
include
a.php文件,则运行
include
命令的脚本将在其所在的目录中查找目标.php文件。引用文件的任何命令也是如此;
utils.php
是否由
foo.php
调用并不重要,后者是由
bar.php
调用的,后者是由
index.php
等调用的。它只关系到从何处执行
fopen
命令。