2012-03-23 16 views
5

Estoy tratando de escribir un archivo de un directorio a otro. Por ejemplo, http://www.xxxxxxx.com/admin/upload.php a http://www.xxxxxxx.com/posts/filename.phpIntentando escribir un archivo en un directorio diferente usando fopen()

He leído que no puedo escribir un archivo utilizando la ruta HTTP, ¿cómo utilizo una ruta local?

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

Respuesta

8

Debe utilizar la ruta absoluta o relativa al archivo en el sistema de archivos.

<?php 

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

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

?> 
+0

Gracias, eso funcionó. – user1142872

+0

@ user1142872 Debe marcar esto como la respuesta. –

3

Puede abrir un archivo desde un directorio dentro del directorio principal de este archivo usando una ruta relativa. Por ejemplo, la ruta relativa a /foo/x de /foo/y es ../x. Como probablemente haya averiguado, los puntos dobles significan "directorio arriba". Entonces, /foo/../foo/bar es lo mismo que /foo/bar. En general, es más seguro utilizar rutas absolutas, ya que la ruta relativa puede depender del directorio actual del proceso. Pero debe nunca hardcode una ruta absoluta: en su lugar, calcule.

Por lo tanto, esto debería abrir artículos/thefile.php de 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"); 

realmente debería familiarizarse con paths.

+0

¡Gracias por la información avanzada! – user1142872

+0

en cualquier momento! por favor no olvides [cerrar la pregunta] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) – jpic

2

Siempre se puede acceder a la representación de la ruta local de http://www.yourdomain.com/ con $ _SERVER ['RAÍZ_DOCUMENTOS'].

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