我正在尝试将文件从一个目录写入另一个目录。例如,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");
答案 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' );
?>