Foros del Web » Programando para Internet » PHP »

opciones para copiar imagenes

Estas en el tema de opciones para copiar imagenes en el foro de PHP en Foros del Web. Que opcion es la mas segura para copiar una imagen de un servidor local a uno remoto. Saludos...
  #1 (permalink)  
Antiguo 20/12/2013, 03:50
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 3 meses
Puntos: 10
opciones para copiar imagenes

Que opcion es la mas segura para copiar una imagen de un servidor local a uno remoto.
Saludos
  #2 (permalink)  
Antiguo 20/12/2013, 04:15
 
Fecha de Ingreso: mayo-2009
Ubicación: Japon
Mensajes: 60
Antigüedad: 15 años
Puntos: 12
Respuesta: opciones para copiar imagenes

no se entiende...

te refieres de un servidor remoto a otro servidor remoto o desde tu ordenador a un remoto?

1- De ser pc a local lo mas común es FTPeS (FTP explicito) o SFTP (FTP sobre SSH)

2- En el caso de ser servidor a servidor, hay algunas librerías para transferir vía FTPeS con PHP


En fin... solo eso se me ocurre, suerte con tu busqueda
  #3 (permalink)  
Antiguo 20/12/2013, 04:30
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 3 meses
Puntos: 10
Respuesta: opciones para copiar imagenes

Hola nksn, me refiero desde la web osea un servidor pero en este caso local hasta un servidor remoto.
Si de servidor a servidor.
Que librerias son?
De todas formas como es para aprender me gustaria saber hacerlo sin librerias, pero no se que funcones son.
Alguien me puedo orientar para poder estudiar el tema?
Saludos.
  #4 (permalink)  
Antiguo 20/12/2013, 06:26
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 3 meses
Puntos: 10
Respuesta: opciones para copiar imagenes

Estoy comprobando que la libreria cURL puede hacer este tipo de cosas pero no creo que sea mi mejor solucion.
Realmente lo que necesito es copiar un archivo y copiarlo en el servidor remoto para despues si quiero poder borrarlo.

Con cURL si que puedo subir archivos a un servidor remoto pero creo que no es posible borrarlos.

Necesitaria algo asin como ftp para manejarlo con php pero no se si esto es seguro, os comento lo que necesito por si alguien me quiero orientar para la mejor solucion.

En mi web se regitran usuarios donde pueden poner una imagen de perfil donde subo a mi servidor, pero doy la opcion a cambiarla en el caso de cambiarla quiero guardar la imagen antigua en un servidor remoto por si quiere recuperarla dando tambien la opcion de eliminarla.

Y claro la mejor opcion que veo es ftp pero no me convence su seguridad espero que me puedan ayudar un poco para entender bien la mejor manera de hacerlo.
saludos.
  #5 (permalink)  
Antiguo 20/12/2013, 06:34
 
Fecha de Ingreso: diciembre-2012
Mensajes: 75
Antigüedad: 11 años, 4 meses
Puntos: 2
Respuesta: opciones para copiar imagenes

Quizá esto pueda servirte copia mediante ssh

system ('scp /../image.png user@ip:/../../imagen.png');
  #6 (permalink)  
Antiguo 20/12/2013, 08:15
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 3 meses
Puntos: 10
Respuesta: opciones para copiar imagenes

Hola roombah no me esta funcionando hice algo asin:

Código PHP:
Ver original
  1. $copia=system ('scp imagen.jpg  [email protected]:44  copia.jpg');
  2.  
  3. if($copia){
  4.     echo'correcto';
  5. }else{
  6.     echo'incorrecto';
  7. }

no se si la sintaxis esta mal, aunque de todas formas para aceder via ssh necesita contraseña.

Última edición por azaz; 20/12/2013 a las 09:02
  #7 (permalink)  
Antiguo 20/12/2013, 09:02
 
Fecha de Ingreso: mayo-2009
Ubicación: Japon
Mensajes: 60
Antigüedad: 15 años
Puntos: 12
Respuesta: opciones para copiar imagenes

Cita:
Iniciado por roombah Ver Mensaje
Quizá esto pueda servirte copia mediante ssh

system ('scp /../image.png user@ip:/../../imagen.png');
si tienes tu web programada así, eres un desastre... sabes lo seguro que es hacer eso...


la librería nativa de FTPeS de php es muy potente, prueba usar esta

http://www.php.net/manual/en/functio...sl-connect.php


asi es ta en la pagina oficial
Código PHP:
// set up basic ssl connection
$conn_id ftp_ssl_connect($ftp_server);

// login with username and password
$login_result ftp_login($conn_id$ftp_user_name$ftp_user_pass);

echo 
ftp_pwd($conn_id); // /

// close the ssl connection
ftp_close($conn_id); 
imagino que quedaría algo así (no lo probé)

Código PHP:
// conexion al servidor
$conn_id ftp_ssl_connect($ftp_server);

// login
ftp_login($conn_id$ftp_user_name$ftp_user_pass) or die('error de conexion');

// modo pasivo (casi todos los servidores lo piden
ftp_pasv($conn_idtrue);

// cambio de directorio (aqui se subira el archivo, recuerda que es path es relativo  al "home" de la cuenta)
if(ftp_chdir($conn_id'[home]/src/'))
{
    
// transferimos el archivo en modo binario
    
if(!ftp_put($conn_id'string nombre del archivo remoto (no path)''path del archivo local'FTP_BINARY))
    {
        echo 
'error de transferencia';
    }
};

// cerramos conexion
ftp_close($conn_id
recuerda que este tipo de trabajos tiene un tiempo de ejecución moderado, así que pon algo que evite la ejecución de forma inesperada del stript

"ignore_user_abort" y "set_time_limit"

usa try&catch para capturar errores y evitar ejecucion infinita (en caso de que uses time_limit a 0)


pregunta por curiosidad, tiene que ser vía php o es para mantenimiento?
  #8 (permalink)  
Antiguo 20/12/2013, 09:25
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 3 meses
Puntos: 10
Respuesta: opciones para copiar imagenes

Hola nksn, a que te refieres con esto:

recuerda que este tipo de trabajos tiene un tiempo de ejecución moderado, así que pon algo que evite la ejecución de forma inesperada del stript

"ignore_user_abort" y "set_time_limit"

usa try&catch para capturar errores y evitar ejecucion infinita (en caso de que uses time_limit a 0)


y la respuesta a tu pregunta seria con php para mantenimiento si, pero si esto es posible con otro lenguaje de programacion que fuese mas seguro me gustaria saberlo.
espero que me explique un poco mejor esto ultimo gracias.
  #9 (permalink)  
Antiguo 20/12/2013, 09:39
 
Fecha de Ingreso: mayo-2009
Ubicación: Japon
Mensajes: 60
Antigüedad: 15 años
Puntos: 12
Respuesta: opciones para copiar imagenes

los trabajos de transferencia tienen tiempos de ejecución mas "largos", por defecto en PHP el tiempo máximo de ejecución es de 30 segundos, una vez superado se "mata" el proceso y se retorna un error, para que esto no suceda se tienen que agregar algunas configuraciones previas

ignore_user_abort(true);

Esta función se encarga de evitar que la ejecución se interrumpa (aun cuando el cliente cierre la ventana del navegador o refresque la pagina)

set_time_limit(0);

Esto hace infinito el tiempo de ejecución (esto puede causar hilos "zombies" si tienes un loop mal programado, por eso el hecho de tener cuidad con lo tiempos de ejecución infinitos)


cambiando un poco el tema:

Si son transferencias que solo "el administrador" realiza puedes hacerlo directamente desde la consola, como mencionaron arriba, SSH puede transferir archivos de servidor a servidor sobre su mismo protocolo

si son trabajos en modo "background" (segundo plano), puedes usar Python para rutinas de sincronizado, este ultimo requiere un nivel moderado de conocimiento, ya que se usan protocolos, puertos y un indice para ver el estado de los archivos
  #10 (permalink)  
Antiguo 27/12/2013, 09:00
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 3 meses
Puntos: 10
Respuesta: opciones para copiar imagenes

Hola nksn perdona por no contestar antes, muchas gracias por tu aclaracion, tengo una duda sobre la funcion ftp_ssl_connect, si el servidor que contiene las imagen tiene que tener instalado el ftp y el openssl, el servidor remoto donde quiero copiar la imagen tendria que tener instalado tambien estos dos modulos ftp y openssl.

Espero que me lo podais aclarar que tengo dudas.
  #11 (permalink)  
Antiguo 29/12/2013, 23:05
 
Fecha de Ingreso: mayo-2009
Ubicación: Japon
Mensajes: 60
Antigüedad: 15 años
Puntos: 12
Respuesta: opciones para copiar imagenes

perdon por la demora (el fin de semana estuvo fatal en tiempos)

volviendo al tema...

si no leí mal, es al revez... el remoto OpenSSL + ftp y el source PHP + ftp mod
  #12 (permalink)  
Antiguo 30/12/2013, 10:07
 
Fecha de Ingreso: enero-2011
Ubicación: /root
Mensajes: 530
Antigüedad: 13 años, 3 meses
Puntos: 61
Respuesta: opciones para copiar imagenes

Podrias crear un bash en el mismo servidor , si lo que quieres hacer es por temas de mantenimiento.

Saludos
  #13 (permalink)  
Antiguo 30/12/2013, 12:52
 
Fecha de Ingreso: diciembre-2012
Mensajes: 128
Antigüedad: 11 años, 4 meses
Puntos: 12
Respuesta: opciones para copiar imagenes

Código PHP:
copy("http://servidor.com/imagen/origen.jpg""imagen/destino.jpg"); 
__________________
Comparador facturas de luz
  #14 (permalink)  
Antiguo 30/12/2013, 14:30
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 3 meses
Puntos: 10
Respuesta: opciones para copiar imagenes

phoneval creo que copy no me sirve ya que esto creo que solo es para un mismo servidor, yo necesito copiar imagens desde un servidor local a un servidor remoto, osea una vez sube la imagen el usuario pasarlo a otro servidor. probe con la funcion que puse nksn.

pero me da este error:

Warning: ftp_login(): This security scheme is not implemented in

es esta linea

ftp_login($conn_id, $ftp_user_name, $ftp_user_pass) or die('error de conexion');

como podria saber si lo tengo bien instalado y compilado el openssl?
saludos.

Última edición por azaz; 30/12/2013 a las 14:38
  #15 (permalink)  
Antiguo 30/12/2013, 20:58
 
Fecha de Ingreso: mayo-2009
Ubicación: Japon
Mensajes: 60
Antigüedad: 15 años
Puntos: 12
Respuesta: opciones para copiar imagenes

intenta conectarte con filezilla al servidor remoto desde tu ordenador local, luego haslo desde php...

lo del FTPeS es un poco enrrollador, ya que se necesita configurar varias cosas y tiene que ver con el entorno en el cual esta instalado. (debes configurar el firewall para que abra el puerto de conexion y puertos pasivos)

en este caso te recomiendo googlear un tutorial para instalar FTPeS con sertificado self-signed (auto-firmado)

Última edición por nksn; 30/12/2013 a las 20:59 Razón: ortografia(?)
  #16 (permalink)  
Antiguo 30/12/2013, 21:24
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 3 meses
Puntos: 10
Respuesta: opciones para copiar imagenes

Gracias por tu colaboracion desde filezilla si me conecto.
Ya googlee y configure pero sigue sin funcionar.
No sabes algun tutorial de como hacerlo correctamente?
Por cierto esta intalado en un centos 6.5
  #17 (permalink)  
Antiguo 30/12/2013, 21:39
 
Fecha de Ingreso: mayo-2009
Ubicación: Japon
Mensajes: 60
Antigüedad: 15 años
Puntos: 12
Respuesta: opciones para copiar imagenes

talvez, estas introduciendo mal la direccion

ftp_connect('dominio.com') // sin prefijo

ami me daba el mismo error cuando introducía ftp://dominio.xxx

de ultimo caso usa phpinfo() para ver los modulos del servidor
  #18 (permalink)  
Antiguo 31/12/2013, 05:26
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 3 meses
Puntos: 10
Respuesta: opciones para copiar imagenes

Hola nksn, en principio agradecerte por tu interes en ayudarme y mas en un tema tan delicado como este. Intentare dar mas informacion por si puedes o alguien puede ayudarme, en primer lugar esto es lo que tengo en el phpinfo:

openssl
OpenSSL support enabled
OpenSSL Library Version OpenSSL 1.0.1e-fips 11 Feb 2013
OpenSSL Header Version OpenSSL 1.0.1e-fips 11 Feb 2013

entiendo que esta habilitado correctamente, aunque no se si ya esta compilado correctamente esto no se como se puede saber.


referente a ftp_connect sin prefijo lo tengo correctamente, yo tengo condicionales para depuerar el codigo y el error es esta linea exactamente:

Código PHP:
Ver original
  1. if(!ftp_login($conn_id, $ftp_user_name, $ftp_user_pass)){
  2.     echo'error login';
  3. }

el condicional de la conexion esta exactamente:

Código PHP:
Ver original
  1. if(ftp_ssl_connect($ftp_server)){
  2.     echo'conexion correcta';
  3. }

me da verdadero


Ahora volviendo a la instalacion de los paquetes y lo que tiene que hacer, en donde tengo la pagina php osea mi servidor local el usuario guarda una foto en un directorio y seguido con ftp tengo que copiar esa foto y pegarla en un servidor remoto, bien en mi servidor local osea donde tengo el script php ahi es donde tengo habilitado el openssl(supuestamente esta habilidato) con soporte para php, y en el servidor remoto donde tengo que copiar la imagen solo tengo un servidor ftp con su usurio correspondiente.

Es asin o no?

bueno en el script php que esta en mi servidor local tengo el codigo php con los datos de conexion del usuario ftp del servidor remoto, pero no funciona, pero el error esta en el openssl porque si cambio esta linea:

Código PHP:
Ver original
  1. $conn_id = ftp_ssl_connect($ftp_server);

por esta osea sin la seguridad

Código PHP:
Ver original
  1. $conn_id = ftp_connect($ftp_server);

funciona correctamente

Hay alguna manera de saber si el openssl esta instalado y configurado correctamente?
Este tema me tiene un poco saturado ya, seria aconsejable desistalar php y volverlo a instalar junto con el openssl y los demas componenetes que necesito?

Seria aconsejable o no?

Bueno un saludo y seguire googleando.
  #19 (permalink)  
Antiguo 01/01/2014, 04:37
 
Fecha de Ingreso: mayo-2009
Ubicación: Japon
Mensajes: 60
Antigüedad: 15 años
Puntos: 12
Respuesta: opciones para copiar imagenes

La verdad no creo que sea un problema de instalación sino mas bien de protocolos, es decir, "This security scheme is not implemented" es un header del protocolo FTP, probablemente el servidor no soporta el sistema por el cual se realiza la petición

por ejemplo si se usa TLS v1 y el servidor FTP no tiene "entiende" /reconoce esa versión, envía el header "500 - This security scheme is not implemented"

en ese caso deberías revisar la versión del PHP o la librería FTP, de ultimo caso usar SFTP (protocolo FTP sobre SSH) "ssh2_sftp()", en SFTP hay que crear cuentas SSH "enjauladas" por seguridad

un cordial saludo y Feliz año nuevo!
  #20 (permalink)  
Antiguo 03/01/2014, 06:38
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 3 meses
Puntos: 10
Respuesta: opciones para copiar imagenes

Hola nksn perdona por responder tan tarde y espero que te fuera bien el año nuevo.

Volviendo al tema al utilizar ssh2_sftp que funcion php seria para copiar imagenes de servidor local (donde esta el php) a servidor remoto, donde este ultimo solo tendria un servidor ftp.

Igual no sabes de algun tutorial donde te enseñen bien el funcionamiento de openssl con ftp y php?

Gracias por tu ayuda se agradece, saludos.
  #21 (permalink)  
Antiguo 22/01/2014, 21:04
 
Fecha de Ingreso: mayo-2009
Ubicación: Japon
Mensajes: 60
Antigüedad: 15 años
Puntos: 12
Respuesta: opciones para copiar imagenes

realmente perdon por el retraso, (ya se terminaron mis vacaciones)

es el protocolo ftp sobre ssh, si tienes ssh del lado del servidor remoto con eso basta

para mas info pasate por aqui;
http://www.php.net/manual/es/ref.ssh2.php

asi esta en el manual de php

Código PHP:
// conectas
$connection ssh2_connect('shell.example.com'22);

// inicias una session
ssh2_auth_password($connection'username''password');

// envias el archivo local al remoto
ssh2_scp_send($connection'/local/filename''/remote/filename'0644); 
suerte con el proyecto!


nota : talvez tarde en responder nuevamente

Etiquetas: imagenes, opciones
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.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:32.