Попытка записать файл в другой каталог с помощью fopen () - PullRequest
6 голосов
/ 23 марта 2012

Я пытаюсь записать файл из одного каталога в другой. Например, от http://www.xxxxxxx.com/admin/upload.php до http://www.xxxxxxx.com/posts/filename.php

Я прочитал, что не могу записать файл, используя путь HTTP, как мне использовать локальный путь?

$ourFileName = "http://www.xxxxxxxx.com/articles/".$thefile.".php";
$ourFileHandle = fopen($ourFileName, 'w') or die("can't open file");

Ответы [ 3 ]

10 голосов
/ 23 марта 2012

Вы должны использовать абсолютный или относительный путь к файлу в файловой системе.

<?php

$absolute_path = '/full/path/to/filename.php';
$relative_path = '../posts/filename.php';

// use one of $absolute_path or $relative_path in fopen()

?>
4 голосов
/ 23 марта 2012

Вы можете открыть файл из каталога внутри родительского каталога этого файла, используя относительный путь.

Например, относительный путь к /foo/x из /foo/y равен ../x.Как вы, наверное, поняли, двойные точки означают «каталог выше».Итак, /foo/../foo/bar совпадает с /foo/bar.В целом безопаснее использовать абсолютные пути, поскольку относительный путь может зависеть от текущего каталога процесса. Но вы должны никогда жестко задавать абсолютный путь - вместо этого рассчитайте его.

Итак, для этого нужно открыть файл article / thefile.php из admin / upload.php:

// path to admin/
$this_dir = dirname(__FILE__);

// admin's parent dir path can be represented by admin/..
$parent_dir = realpath($this_dir . '/..');

// concatenate the target path from the parent dir path
$target_path = $parent_dir . '/articles/' . $theFile . '.php';

// open the file
$ourFileHandle = fopen($target_path, 'w') or die("can't open file");

Вы действительно должны ознакомиться с путями .

2 голосов
/ 23 марта 2012

Вы всегда можете получить доступ к представлению локального пути http://www.yourdomain.com/ с помощью $ _SERVER ['DOCUMENT_ROOT'].

<?php
$f = fopen( $_SERVER['DOCUMENT_ROOT'] . '/posts/filename.php' );
?>
...