尝试使用fopen()将文件写入不同的目录

时间:2012-03-23 10:09:57

标签: php localhost fopen

我正在尝试将文件从一个目录写入另一个目录。例如,http://www.xxxxxxx.com/admin/upload.phphttp://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 个答案:

答案 0 :(得分:10)

您应该使用文件系统上文件的绝对路径或相对路径。

<?php

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

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

?>

答案 1 :(得分:4)

您可以使用相对路径从此文件的父目录内的目录中打开文件。

例如,/foo/x /foo/y的相对路径为../x。正如你可能想到的那样,双点意味着“上面的目录”。因此,/foo/../foo/bar/foo/bar相同。通常使用绝对路径更安全,因为相对路径可能取决于进程当前目录。 但是你应该从不硬编码绝对路径 - 而是计算它。

所以,这应该从admin / upload.php打开articles / thefile.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");

你应该熟悉paths

答案 2 :(得分:2)

您始终可以使用$ _SERVER ['DOCUMENT_ROOT']访问http://www.yourdomain.com/的本地路径表示形式。

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