2012-03-23 8 views
5

Tôi đang cố viết một tập tin từ thư mục này sang thư mục khác. Ví dụ: http://www.xxxxxxx.com/admin/upload.php tới http://www.xxxxxxx.com/posts/filename.phpCố gắng viết một tập tin vào một thư mục khác bằng fopen()

Tôi đã đọc rằng tôi không thể ghi tệp bằng cách sử dụng đường dẫn HTTP, làm cách nào để sử dụng đường dẫn cục bộ?

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

Trả lời

8

Bạn nên sử dụng đường dẫn tuyệt đối hoặc tương đối vào tệp trên hệ thống tệp.

<?php 

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

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

?> 
+0

Cảm ơn, điều đó đã hiệu quả. – user1142872

+0

@ user1142872 Bạn nên đánh dấu phần này là câu trả lời. –

3

Bạn có thể mở tệp từ thư mục bên trong thư mục mẹ của tệp này bằng đường dẫn tương đối.

Ví dụ: đường dẫn tương đối đến /foo/x từ /foo/y../x. Như bạn có thể đã tìm ra, các dấu chấm kép có nghĩa là "thư mục ở trên". Vì vậy, /foo/../foo/bar cũng giống như /foo/bar. Nó là an toàn hơn để sử dụng đường dẫn tuyệt đối nói chung, như đường dẫn tương đối có thể phụ thuộc vào thư mục hiện tại quá trình. Nhưng bạn nên không bao giờ hardcode một đường dẫn tuyệt đối - tính toán nó thay thế.

Vì vậy, điều này sẽ mở ra các bài báo/thefile.php từ 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"); 

Bạn thực sự nên làm quen với paths.

+0

Cảm ơn thông tin nâng cao! – user1142872

+0

Bất cứ lúc nào! xin đừng quên [đóng câu hỏi] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) – jpic

2

Bạn luôn có thể truy cập đại diện đường dẫn cục bộ là http://www.yourdomain.com/ với $ _SERVER ['DOCUMENT_ROOT'].

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