Foros del Web » Programando para Internet » PHP »

¿Imposible subir archivos?

Estas en el tema de ¿Imposible subir archivos? en el foro de PHP en Foros del Web. Buenas. Estoy haciendo una web con php+mysql para una inmobiliaria. El cliente, a través de un formulario inserta en la base de datos todos los ...
  #1 (permalink)  
Antiguo 19/12/2005, 06:08
Avatar de franquero  
Fecha de Ingreso: julio-2005
Mensajes: 179
Antigüedad: 18 años, 9 meses
Puntos: 1
¿Imposible subir archivos?

Buenas.

Estoy haciendo una web con php+mysql para una inmobiliaria. El cliente, a través de un formulario inserta en la base de datos todos los datos de una vivienda, pero a la hora de subir fotos llegan los problemas.

He estado leyendo por el foro, pero no he conseguido solucionar nada, ya que el server tiene el "safe mode" activado, y tampoco puedo utilizar ini_set()

Mis dudas son:
- ¿existe alguna otra forma de subir archivos?
- ¿existe algun proveedor de hosting con el que se puedan subir archivos?
- ¿en un servidor dedicado puedes tú mismo cambiar la configuración del "safe mode"?


Estoy desesperado, porque tengo puestas muchas ilusiones en este proyecto, y para realizarlo es de vital importancia que se puedan subir imágenes.

Saludos
__________________
Es una suerte que la sociedad libre sea más productiva, porque de no haberlo sido jamás se habría tolerado.
  #2 (permalink)  
Antiguo 19/12/2005, 07:17
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
- ¿existe alguna otra forma de subir archivos?
Deberías indicar el código que usas, pero ..por norma general cuando usas "safe mode" el proceso de "upload" se hace igual que de constumbre .. lo que no puedes usar es "copy()" para acceder al archivo subido o intentar hacer un fopen() al archivo subido directamente por ejemplo para llevartelo a un campo tipo BLOB de tu BD .. En esos casos el proceso pasa por usar move_uploaded_file() y de ahí si corresponde hacer tu fopen() (desde un directorio de tu sitio donde la anterior función moví el archivo).

Cita:
- ¿existe algun proveedor de hosting con el que se puedan subir archivos?
No todos usa "safe mode" ... es cosa del que te intereses, preguntes o expongas que tu fin es subir archivos al servidor vía PHP .. a lo mejor hasta ellos mismos te dá la técnica que funcione correctamente bajo su configuración.

Cita:
- ¿en un servidor dedicado puedes tú mismo cambiar la configuración del "safe mode"?
"Dedicado" eso mismo significa .. es un servidor para ti sólo .. podrías consultar en el foro de "Dominios y Hosting" que tanto puedes alterar la configuración, pero en principio el proveedor te proporciona el "Hardware" del servidor y la infraestructura para conectarlo a internet (ancho de banda .. etc) entre otras cosas. Por defecto se te puede pre-instalar cierto S.O. por parte de tu proveedor .. pero hasta eso mismo podrías hacerlo tu si te sientes capacitado. Lo mismo con ajustes o detalles de configuración.

Por supuesto .. si NO usar "Safe mode" involucra alguna posible falla de seguridad, es probable que no te dejen usarlo así o se estipule en tus contratos algo tipo "corre bajo la responsabilidad del cliente no usar "safe mode" ...".

Un saludo,
  #3 (permalink)  
Antiguo 19/12/2005, 10:19
Avatar de franquero  
Fecha de Ingreso: julio-2005
Mensajes: 179
Antigüedad: 18 años, 9 meses
Puntos: 1
Gracias por tu respuesta, Cluster.

El código que estoy utilizando lo he visto en el foro, éste es el script que recoge lo enviado por un formulario
Código PHP:
<?php
$archivo 
$_FILES['userfile']['name'];
   echo 
"Archivo Recibido:" .$archivo."<br>";
   
$dir $_FILES['userfile']['tmp_name'];
   echo 
"Directorio temporal: ".$dir."<br>";

if (
is_uploaded_file($_FILES['userfile']['tmp_name'])) {
  
move_uploaded_file($_FILES['userfile']['tmp_name'], "/mi/carpeta/".$_FILES['userfile']['name']); 
} else {
   echo 
"Possible file upload attack. Filename: " $_FILES['userfile']['name'];
}
?>
El caso es que en local sí me funciona, y los del hosting me han dicho que al tener el safe mode activado sólo puedo hacerlo vía FTP.

Si alguien conoce alguna forma de subir archivos en safe mode...

También he estado buscando y he encontrado estas webs de alojamiento con safe mode off:

http://www.server-spain.com
http://www.eopensolutions.com

¿Alguien trabaja o ha trabajado con ellos?

Saludos y gracias de antemano por las respuestas.
__________________
Es una suerte que la sociedad libre sea más productiva, porque de no haberlo sido jamás se habría tolerado.
  #4 (permalink)  
Antiguo 19/12/2005, 11:30
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
El caso es que en local sí me funciona, y los del hosting me han dicho que al tener el safe mode activado sólo puedo hacerlo vía FTP.
mm Entonces que "gracia" tiene usar esos provedores? .. Se está restringiendo el tipo de aplicaciones que se pueden crear y usar en dichos proveedores.

Bueno .. sobre tu código lo que veo es lo siguiente:

Código PHP:
move_uploaded_file($_FILES['userfile']['tmp_name'], "/mi/carpeta/".$_FILES['userfile']['name']); 
No puedes hacer referencia a "/mi/carpeta/" o por lo menos debes saber que sería la ruta absoluta completa de tu servidor .. algo tipo /home/sitio.com/public_html/carpeta .. siempre desde el "raiz" completo de ese servidor .. (no sé si eso lo haces así ya .. pero es un punto a tener en cuenta).

Esto no va asegurar que funcione . pues hay un tema de permisos referentes al UID que crea el archivo y el que lo lee .. que no permite hacer este tipo de cosas en "pro" de una seguridad extra a tus scripts.

Revisa la configuración de PHP al respecto:
http://www.php.net/features.safe-mode

Revisa también estos comentarios:
http://qdig.sourceforge.net/Support/PHPSafeMode

Creo que si pusieran algo de su parte tus proveedores podrían usar "Safe Mode" seguro pero no tan restrictivo para estas cosas.

Un saludo,
  #5 (permalink)  
Antiguo 19/12/2005, 12:37
Avatar de franquero  
Fecha de Ingreso: julio-2005
Mensajes: 179
Antigüedad: 18 años, 9 meses
Puntos: 1
De nuevo gracias por tu ayuda, Cluster.

La ruta que utilizo en el otro script era la absoluta (/home/..../..../), pero me da error de acceso denegado.

Sin embargo, he conseguido subir un archivo a mi servidor utilizando un script para conectar via FTP:

Formulario:
Código PHP:
<html>

<
body marginwidth=4 marginheight=4 topmargin=4 leftmargin=4 bgcolor=white vlink="#0000ff" link="#0000ff">

<
form name="Attachments"  method=POST action="ftp2.php" enctype="multipart/form-data">

<
input type=hidden name=box value="">

<
tr>
<
td nowrap width="1%">&nbsp;&nbsp;<b>Image:</b></td>
<
td colspan=2>
<
input type=file name=source_file size=20> <br>

&
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

</
td>
</
tr>
<
input type=submit name=btnSubmit value=Submit size=20 style="border: 1px solid #0000FF"></form>
</
body>
</
html
ftp2.php:
Código PHP:
<?php
      
   $ftp_server
='ftp.tuservidor.com';//serverip
   
$conn_id ftp_connect($ftp_server);
  
  
   
// login with username and password
   
$user="usuario_ftp";
   
$passwd="clave_ftp";
   
$login_result ftp_login($conn_id$user$passwd);

// check connection
   
if ((!$conn_id) || (!$login_result)) {
       echo 
"FTP connection has failed!";
       echo 
"Attempted to connect to $ftp_server for user $ftp_user_name";
       die;
   } else {
       echo 
"<br>Connected to $ftp_server, for user $user<br>";
   }
//directorylike /www.velibaba.com/images
  
ftp_chdir($conn_id"httpdocs");
  
ftp_chdir($conn_id"mi_carpeta");

//$destination_file=ftp_pwd($conn_id);

$destination_file="x.jpg";
echo (
"<br>");
print 
$destination_file;

echo (
"<br>");

// upload the file
$upload ftp_put($conn_id$destination_file$source_fileFTP_BINARY);

// check upload status
if (!$upload) {
       echo 
"FTP upload has failed!";
   } else {
       echo 
"Uploaded $source_file to $ftp_server as $destination_file";
   }

// close the FTP stream
ftp_close($conn_id);
?>
Script obtenido en www.php.net:

- Funciones FTP
- ftp_put()

¿Qué os parece?
__________________
Es una suerte que la sociedad libre sea más productiva, porque de no haberlo sido jamás se habría tolerado.
  #6 (permalink)  
Antiguo 19/12/2005, 12:41
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Ok .. entonces por FTP (moviendo tu archivo a tu mismo servidor que corre tus scripts PHP) los archivos quedarán con el permiso del usuario que usas para FTP y bajo el UID del usuario de FTP (supongo)

Revisa bien que puedas abrir esos archivos (fopen() .. include() .. etc) con scripts PHP .. (por tema de permisos que coincidan y sean todos del mismo UID).

Un saludo,
  #7 (permalink)  
Antiguo 30/12/2005, 07:49
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Ahora que vuelvo a ver el mensaje ... Comentario:

// upload the file
$upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY);

Estaría bueno usar los arrays superglobales y .. con una pequeña modificación .. tomamos el nombre del archivo igual al que subimos y luego movemos por FTP:

Código PHP:
// upload the file 
$upload ftp_put($conn_id$_FILES['source_file']['name'], $_FILES['source_file'], FTP_BINARY); 
Un saludo,
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 14:21.