2013-05-13 4 views
1

Предположив У меня есть файл под названием «utils.php», где я могу открыть файл для записи или чтения:Открытие файла PHP

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

Теперь, если у меня есть еще один сценарий ПОД ДРУГИМ ДИРЕКТОРИИ, говорят «MYDIR/myscript.php "и I include" utils.php "в" myscript.php ", , где бы файл (попытаться) был открыт с? Путь «utils.php» или путь «myscript.php». И если это каталог «myscript.php», это означает, что каждый скрипт, который включает в себя «utils.php», будет искать файл с именем «myfile.txt» в его каталоге, не так ли?

+1

Почему бы вам не попробовать и не видеть? – sgroves

ответ

0

Пути считаются относительно каталога сценария, выполняющего команду, если не указан абсолютный путь (путем префикса пути с помощью «/»), даже если сценарий вызывается из другого места. Поэтому, если вы указали include в say, «/var/www/localhost/htdocs/foo.php», оператор include будет выглядеть в той же папке, но внутри включенного файла любые инструкции fopen будут выглядеть в пределах той папки, в которой находится файл php (если не указано иное).

+0

Я все еще не совсем уверен, понял ли я - так что мой файл будет включен из mydir/в примере? –

+0

'include' - это команда; 'fopen' - это команда. Если вы включите файл .php, скрипт, запускающий команду 'include', будет искать целевой файл .php в том же каталоге, в котором он находится. То же самое касается любой команды, ссылающейся на файл; неважно, был ли 'utils.php' вызван' foo.php', который был вызван 'bar.php', который был вызван' index.php' и т. д. Это имеет значение только там, где * это * fopen 'команда выполняется из. – klugerama

0

Если вы include файл, содержимое этого файла будет размещено в текущем файле. Затем код будет запущен. Позвольте мне сказать пример. У вас есть четыре файла:

  • MYDIR/

    • index.php:

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

      mydir directory 
      
  • file.php:

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

    base level 
    

При запуске MYDIR/index.php, первый, file.php включает. Затем index.php содержит:

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

После этого будет выполнен вышеуказанный код. Таким образом, выход:

mydir directory 
Смежные вопросы