| Autor |
Mensaje |
|
|
#1 Sun Nov 05, 2006 3:41 pm
|
|
Miembro
Registrado: Nov 2006
Mensajes: 11
|
hola pues llevo ya bastante tiempo y tambien he utilizado el codigo de php.net y las instrucciones y no he podio resolver mi problema, tengo tres codigos, un que es de la web del programador, otro que es de php.net y uno que hize yo que es el que les voy a mostrar. el Error que me manda es el siguiente: Citar Conectado. Cambio a modo pasivo Cambiado al directorio necesario flo.wmf /var/tmp/php8WjSjm subiendo el archivo... Excede el tamaño del archivo... Ruta: /flo.wmf
como ven se conecta y todo pero no sube los archivos, que es lo que puede suceder?, me podrian ayudar con mi codigo...... mi codigo es el siguiente: -------------------------------------------phpftp.php------------------------------------ <html> <head> <title>Documento sin título</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body> <form name="enviador" method="post" action="recibe.php" enctype="multipart/form-data"> <!--Tamaño maximo de archivos--> <input type="hidden" name="MAX_FILE_SIZE" value="2000000"> Archivo: <input type="file" name="archivo"> <input type="submit"> </form> </body> </html>
---------------------------------------recibe.php-------------------------------------- <?php // Primero creamos un ID de conexión a nuestro servidor $cid = ftp_connect("wales.opusobras.com"); // Luego creamos un login al mismo con nuestro usuario y contraseña $resultado = ftp_login($cid, "usuario","contraseña"); // Comprobamos que se creo el Id de conexión y se pudo hacer el login if ((!$cid) || (!$resultado)) { echo "Fallo en la conexión"; die; } else { echo "Conectado."; } // Cambiamos a modo pasivo, esto es importante porque, de esta manera le decimos al //servidor que seremos nosotros quienes comenzaremos la transmisión de datos. ftp_pasv ($cid, false) ; echo "<br> Cambio a modo pasivo<br />"; // Nos cambiamos al directorio, donde queremos subir los archivos, si se van a subir a la raíz cho "Cambiado al directorio necesario"; // Tomamos el nombre del archivo a transmitir, pero en lugar de usar $_POST, usamos $_FILES que le indica a PHP // Que estamos transmitiendo un archivo, esto es en realidad un matriz, el segundo argumento de la matriz, indica // el nombre del archivo $local = $_FILES["archivo"]["name"]; // Este es el nombre temporal del archivo mientras dura la transmisión $remoto = $_FILES["archivo"]["tmp_name"]; // El tamaño del archivo $tama = $_FILES["archivo"]["size"]; echo "<br />$local<br />"; echo "$remoto<br />"; echo "subiendo el archivo...<br />"; // Juntamos la ruta del servidor con el nombre real del archivo $ruta = "/" . $local; // Verificamos si no hemos excedido el tamaño del archivo //is_uploadded_file($remoto); if (!$tama<=$_POST["MAX_FILE_SIZE"]){ echo "Excede el tamaño del archivo...<br />"; } else { // Verificamos si ya se subio el archivo temporal if (is_uploaded_file($remoto)){ // copiamos el archivo temporal, del directorio de temporales de nuestro servidor a la ruta que creamos copy($remoto, $ruta); } // Sino se pudo subir el temporal else { echo "no se pudo subir el archivo " . $local; } } echo "Ruta: " . $ruta; //cerramos la conexión FTP ftp_close($cid); ?> « Ultima editación por TuXsOuL en Sun Nov 05, 2006 4:13 pm. »
|
|
|
#2 Sun Nov 05, 2006 4:28 pm
|
|
Administrador
Registrado: Sep 2005
Mensajes: 97
Localización: Cuautla, Morelos, México.
|
El código lo veo bien, yo creo más que es un problema de configuración del servidor, primero te recomiendo leer algunos principios básicos de ftp y php. Por la siguiente razón: * Modo pasivo, no significa lo que tienes comentado en tu código, el modo pasivo es una caracteristica de los servidores ftp, para evitar errores de la transmisión de datos y así desconectarse, ahora no todos los servidores de ftp soportan eso, te recomiendo leer sobre el servidor que estas usando si lo soporta. * El modo pasivo a diferencia de la transmision no pasiva, utiliza más puertos de conexión, es decir usa además del puerto 21 más puertos, cual es la desventaja, que si el servidor tiene algún firewall, el modo pasivo jamás funcionará. Por lo que veo en tu código, no se si la idea la entiendo mal, pero veo que hace algo así, primero el archivo se lo envias a php, el cual despúes envia el archivo al servidor de "ftp". Te recomiendo también checar lo siguiente: * Php esta funcionando en modo safemode ? * Que tamaño tiene de uploads el php ? * El directorio donde quieres subir el archivo tiene los suficientes permisos ? * Php tiene configurado bien el directorio tmp que utiliza para los uploads ? * Qué tamaño tiene el archivo que quieres subir ? Todo eso lo encuentras en el php.ini  Como comentario diré que nunca subes por ftp realmente, solo conectas y desconectas, cambias a modo pasivo pero no envias mediante ftp usando "ftp_put" o me equivoco ? referencia: http://www.desarrolloweb.com/articulos/1752.phpEntonces solo subes 100% utilizando php  _______________ Comienza ahorrar y adquiere tú sistema de flujo continuo para tú impresora, ya no compres tantos cartuchos, ¿deseas más información?, visita el siguiente link: http://www.dolric.com/content/view/25/1/. « Ultima editación por TuXsOuL en Sun Nov 05, 2006 4:33 pm. »
|
|
|
#3 Mon Nov 06, 2006 12:31 pm
|
|
Miembro
Registrado: Nov 2006
Mensajes: 11
|
hola, pues lo he estado modificando, un poco, pero de lo que me comentas pues esta dificil que pueda ver el php.ini, es un servidor del gobierno y es compltamente linux  el ftp que utiliza es el webshell version 4.3.5 el php es el php 4.4.3, y yo creo que es muy probable que no tenga algunos permisos como los que me comentas  , tu que me recomiendas que lo haga mejor con el ftp_put? te sabes algun manual que me pueda ayudar?
|
|
|
#4 Mon Nov 06, 2006 2:24 pm
|
|
Administrador
Registrado: Sep 2005
Mensajes: 97
Localización: Cuautla, Morelos, México.
|
Ya probaste visitando la url que di en mi respuesta anterior ?, tal vez te ayude a checar si tu código esta bien. Puedes saber la configuración del servidor aunque no tengas acceso al "php.ini", claro esta si la misma configuración lo permite, esto lo puedes hacer creando un archivo ".php", que contenga el siguiente código: <? phpinfo(); ?> Ahora si de plano php no tiene permisos de subir archivos, no hay manera en que lo logres, utilizando "php", ya que php consigue el archivo y despúes lo envia a "ftp". Creo que tendras que comunicarte con el administrador de ese servidor, por eso luego muchos optan por crear su propio servidor  . Si no pues lo único seria solo usar el "ftp" mediante un cliente real de "ftp". _______________ Comienza ahorrar y adquiere tú sistema de flujo continuo para tú impresora, ya no compres tantos cartuchos, ¿deseas más información?, visita el siguiente link: http://www.dolric.com/content/view/25/1/.
|
|
|
#5 Mon Nov 06, 2006 11:05 pm
|
|
Miembro
Registrado: Nov 2006
Mensajes: 11
|
de lo de como esta funcionando php pues: -safemode lo tiene apagado tiene OFF - el uploads acepta 2megas - esta bien el tmp -el usuario tiene permisos de escritura y lectura - y pues los archivos el mas pesado es de 127 kb y de lo de la page ya vi el codigo de echo lo puedes probar para que veas que tampoco me funciona, http://www.cbtis194.org/paginas/ftp.php aunque ahora que lo revise antes me sacaba los archivos que tenia ahora no se quiere conectar quien sabe porque  , y no le modificado nada
|
|
|
#6 Tue Nov 07, 2006 2:04 pm
|
|
Administrador
Registrado: Sep 2005
Mensajes: 97
Localización: Cuautla, Morelos, México.
|
Sorry disculpa mi torpeza, por no verificar con cuidado tu código no cheque un error simple en un "if": bmw_mor escrito // Verificamos si no hemos excedido el tamaño del archivo //is_uploadded_file($remoto); if (!$tama<=$_POST["MAX_FILE_SIZE"]){ echo "Excede el tamaño del archivo...<br />"; } else {
Simplemente con el tamaño del archivo sea menor nunca pasará de aquí y siempre marcará que el archivo excede el tamaño, creo que seria mejor usar un ">=" sin el signo de "!" o usar el signo de "!" pero a toda la sentencia encerrandola en un parentesis  , ya que de lo contrario se esta negando mal. bmw_mor escrito y de lo de la page ya vi el codigo de echo lo puedes probar para que veas que tampoco me funciona, http://www.cbtis194.org/paginas/ftp.phpaunque ahora que lo revise antes me sacaba los archivos que tenia ahora no se quiere conectar quien sabe porque 
Pues trate de ver lo funcionando pero no más no entra, tarda mucho  . Teniendo un poquito de tiempo, he hecho pequeñas modificaciones a tu código de "recibe.php", este ya funciona en mi máquina local: <?php // Tomamos el nombre del archivo a transmitir, pero en lugar de usar $_POST, usamos $_FILES que le indica a PHP // Que estamos transmitiendo un archivo, esto es en realidad un matriz, el segundo argumento de la matriz, indica // el nombre del archivo $local = $_FILES["archivo"]["name"]; // Este es el nombre temporal del archivo mientras dura la transmisión $remoto = $_FILES["archivo"]["tmp_name"]; // El tamaño del archivo $tama = $_FILES["archivo"]["size"]; echo "<br />$local<br />"; echo "$remoto<br />"; echo "Subiendo Archivo ...<br />"; // Juntamos la ruta del servidor con el nombre real del archivo // Tomando en cuenta la ruta de nuestro webroot $ruta = dirname(__FILE__) . "/" . $local; // Mostramos los tamaños echo "Limite de Peso: " . $_POST["MAX_FILE_SIZE"] . "<br />"; echo "Peso de Archivo: " . $_FILES["archivo"]["size"] . "<br />"; // Verificamos si no hemos excedido el tamaño del archivo //is_uploadded_file($remoto); if ($tama > $_POST["MAX_FILE_SIZE"]){ echo "Este archivo excede el limite ...<br />"; } else { // Verificamos si ya se subio el archivo temporal if (is_uploaded_file($remoto)){ // copiamos el archivo temporal, del directorio de temporales de nuestro servidor a la ruta que creamos copy($remoto, $ruta); } // Sino se pudo subir el temporal else { echo "no se pudo subir el archivo " . $local; } } echo "Ruta: " . $ruta; ?> Con esto y una vez verificado las opciones de php, ya estaremos más seguros que funciona. Ahora toma encuenta que el directorio real (root) y el directorio de tu pagina web (webroot) son diferentes, por lo que si al copiar lo haces a "/" y no tienes permisos no más no se va a poder, sin embargo, modifique el script para que este mueva el archivo a tu directorio raiz de tu webroot es decir en donde se despliega tu "index.html", ahora si quieres que se mueva a un directorio más produnfo solo modifica la variable "$ruta". Preguntas ? pasalas por aquí  . _______________ Comienza ahorrar y adquiere tú sistema de flujo continuo para tú impresora, ya no compres tantos cartuchos, ¿deseas más información?, visita el siguiente link: http://www.dolric.com/content/view/25/1/.
|
|
|
#7 Tue Nov 07, 2006 6:34 pm
|
|
Miembro
Registrado: Nov 2006
Mensajes: 11
|
pues ya lo corregi pero ps ahora caundo lo intento ejecutar dice que no me se pudo conectar o algo a si: Citar Warning: ftp_connect() [function.ftp-connect]: php_network_getaddresses: getaddrinfo failed: hostname nor servname provided, or not known in /hsphere/local/home/cbtis194/cbtis194.org/recibe.php on line 8
Warning: ftp_login() expects parameter 1 to be resource, boolean given in /hsphere/local/home/cbtis194/cbtis194.org/recibe.php on line 10 Fallo en la conexión que significa eso que ya me quitaron los permisos, o que onda? « Ultima editación por TuXsOuL en Tue Nov 07, 2006 8:17 pm. »
|
|
|
#8 Tue Nov 07, 2006 7:32 pm
|
|
Miembro
Registrado: Nov 2006
Mensajes: 11
|
te voy a mandar la dirección del info.php http://www.cbtis194.org/info.phpel programa esta en esta: http://www.cbtis194.org/phpftp.phphasta el domingo entraba y se conectaba pero ahora no quiere, no se que fue lo que paso 
|
|
|
#9 Tue Nov 07, 2006 8:19 pm
|
|
Administrador
Registrado: Sep 2005
Mensajes: 97
Localización: Cuautla, Morelos, México.
|
bmw_mor escrito Warning: ftp_connect() [function.ftp-connect]: php_network_getaddresses: getaddrinfo failed: hostname nor servname provided, or not known in /hsphere/local/home/cbtis194/cbtis194.org/recibe.php on line 8
Warning: ftp_login() expects parameter 1 to be resource, boolean given in /hsphere/local/home/cbtis194/cbtis194.org/recibe.php on line 10 Fallo en la conexión
Eso significa que php no pudo resolver el nombre del servidor a donde se quiere conectar, entonces eso es un error en la red solamente eso, o que no puede localizar el servidor destino.  _______________ Comienza ahorrar y adquiere tú sistema de flujo continuo para tú impresora, ya no compres tantos cartuchos, ¿deseas más información?, visita el siguiente link: http://www.dolric.com/content/view/25/1/.
|
|
|
#10 Tue Nov 07, 2006 8:27 pm
|
|
Administrador
Registrado: Sep 2005
Mensajes: 97
Localización: Cuautla, Morelos, México.
|
bmw_mor escrito te voy a mandar la dirección del info.php http://www.cbtis194.org/info.phpel programa esta en esta: http://www.cbtis194.org/phpftp.php
Pues te recomiendo no andar dando estos accesos publicos cualquier otra persona con malas intensiones puede usarlos. Pues ya vi el phpinfo y esta bien, ya probaste el último código que puse sin usar ftp ?. Por que el código que puse funciona ya bien, ahora si quieres usar ftp, la cosa es ahora el acceso por que con el error que mandaste parece que ya no tienes acceso.  _______________ Comienza ahorrar y adquiere tú sistema de flujo continuo para tú impresora, ya no compres tantos cartuchos, ¿deseas más información?, visita el siguiente link: http://www.dolric.com/content/view/25/1/.
|
|
|
#11 Wed Nov 08, 2006 7:06 pm
|
|
Miembro
Registrado: Nov 2006
Mensajes: 11
|
Pues ya probe el codigo, lo probe en mi servidor si lo jala normal, pero ahora que lo subi al otro servidor me mando esto: Citar Warning: copy(/hsphere/local/home/cbtis194/cbtis194.org/default.xml) [function.copy]: failed to open stream: Permission denied in /hsphere/local/home/cbtis194/cbtis194.org/recibe.php on line 48 Ruta: /hsphere/local/home/cbtis194/cbtis194.org/default.xml
tambien ya quite el php info, lo que voy a hacer ahora es voler a hacer todo de nuevo haber que sucede  « Ultima editación por TuXsOuL en Wed Nov 08, 2006 9:15 pm. »
|
|
|
#12 Wed Nov 08, 2006 7:55 pm
|
|
Miembro
Registrado: Nov 2006
Mensajes: 11
|
ahorita viendo la dirección, el directorio en donde lo tiene que guargar es uno despues cbtis194.org/paginas  , tendra algo que ver eso ?  , como le hago si es que es eso?
|
|
|
#13 Wed Nov 08, 2006 9:19 pm
|
|
Administrador
Registrado: Sep 2005
Mensajes: 97
Localización: Cuautla, Morelos, México.
|
Pues parece que en ese directorio el servidor web no tiene permisos de escritura, solo seria que crearas un directorio para que pudieras escribir lo que subas, esta carpeta debe tener los permisos "777", eso lo puedes verificar primero con un cliente de "ftp" al momento de crear esa carpeta. Ahora si ya la tienes como dices, pues en mi post anterior te había comentado como cambiar eso, tienes que cambiar este pequeño pedazo del código: // Juntamos la ruta del servidor con el nombre real del archivo // Tomando en cuenta la ruta de nuestro webroot $ruta = dirname(__FILE__) . "/" . $local; A esto: // Juntamos la ruta del servidor con el nombre real del archivo // Tomando en cuenta la ruta de nuestro webroot $ruta = dirname(__FILE__) . "/paginas/" . $local;  _______________ Comienza ahorrar y adquiere tú sistema de flujo continuo para tú impresora, ya no compres tantos cartuchos, ¿deseas más información?, visita el siguiente link: http://www.dolric.com/content/view/25/1/.
|
|
|
#14 Thu Nov 09, 2006 5:10 pm
|
|
Miembro
Registrado: Nov 2006
Mensajes: 11
|
|