2012-03-23 17 views

Odpowiedz

8

Powinieneś użyć bezwzględnej lub względnej ścieżki do pliku w systemie plików.

<?php 

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

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

?> 
+0

Dzięki, to zadziałało. – user1142872

+0

@ user1142872 Należy oznaczyć to jako odpowiedź. –

3

Możesz otworzyć plik z katalogu wewnątrz katalogu nadrzędnego tego pliku, używając ścieżki względnej.

Na przykład względna ścieżka do /foo/x z /foo/y to ../x. Jak zapewne domyślacie się, podwójne kropki oznaczają "katalog powyżej". Tak więc /foo/../foo/bar jest taki sam jak /foo/bar. Bezpieczniej jest używać ścieżek bezwzględnych w ogóle, ponieważ ścieżka względna może zależeć od bieżącego katalogu procesu. Ale powinieneś nigdy hardcode bezwzględną ścieżkę - obliczyć zamiast tego.

Więc powinno to otworzyć artykuły/thefile.php od 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"); 

Należy naprawdę zapoznać się z paths.

+0

Dzięki za zaawansowane informacje! – user1142872

+0

W każdej chwili! proszę nie zapomnieć [zamknąć pytanie] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) – jpic

2

Zawsze można uzyskać dostęp do lokalnej ścieżki reprezentacji http://www.yourdomain.com/ za pomocą $ _SERVER ['DOCUMENT_ROOT'].

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