Descargar, editar y resubir los archivos FTP con PHP

  • Mitchell_
  • Newbie
  • Newbie
  • No Avatar
  • Registrado: Ene 29, 2013
  • Mensajes: 6
  • Status: Offline

Nota Enero 29th, 2013, 4:13 am

Estoy tratando de obtener un archivo server.cfg de un FTP en un formulario en mi web, usando PHP. Después de esto que quiero editar el archivo server.cfg en el sitio web, haga clic en "Enviar" y resubir el archivo editado en el FTP. Hice algunas investigaciones, pero todavía tengo algunos errores. Ive consiguió el archivo en el formulario. Pero si editar y guardar el formulario, recibo errores. Mi código PHP:

Código: [ Select ]
<?php

$config = array
(
'user' => 'Hunterr',
'pass' => '[PASSWORD]',
'domain'  => '[HOST]',
'file'   => '213.108.31.167-27030/etpro/server.cfg',    # relative to 'domain'
);

if(isset($_POST['submit']))
{
$fp = fopen($config['file'],'w');
fwrite($fp,stripslashes($_POST['newd']));
fclose($fp);

$ftp = ftp_connect($config['domain']);
ftp_login($ftp,$config['user'],$config['pass']);
ftp_pasv($ftp,TRUE);
ftp_put($ftp,$config['file'],$config['file'],FTP_BINARY);
ftp_close($ftp);

}
?>

<form width="440" height="440" method="post" action="<?=( $_SERVER['PHP_SELF'] )?>">
<textarea name="newd"><?=(    file_get_contents('ftp://'.$config['user'].':'.$config['pass'].'@'.$config['domain'].'/'.$co  nfig['file']) )?></textarea>
<input type="submit" name="submit" value="Save">
</form>
  1. <?php
  2. $config = array
  3. (
  4. 'user' => 'Hunterr',
  5. 'pass' => '[PASSWORD]',
  6. 'domain'  => '[HOST]',
  7. 'file'   => '213.108.31.167-27030/etpro/server.cfg',    # relative to 'domain'
  8. );
  9. if(isset($_POST['submit']))
  10. {
  11. $fp = fopen($config['file'],'w');
  12. fwrite($fp,stripslashes($_POST['newd']));
  13. fclose($fp);
  14. $ftp = ftp_connect($config['domain']);
  15. ftp_login($ftp,$config['user'],$config['pass']);
  16. ftp_pasv($ftp,TRUE);
  17. ftp_put($ftp,$config['file'],$config['file'],FTP_BINARY);
  18. ftp_close($ftp);
  19. }
  20. ?>
  21. <form width="440" height="440" method="post" action="<?=( $_SERVER['PHP_SELF'] )?>">
  22. <textarea name="newd"><?=(    file_get_contents('ftp://'.$config['user'].':'.$config['pass'].'@'.$config['domain'].'/'.$co  nfig['file']) )?></textarea>
  23. <input type="submit" name="submit" value="Save">
  24. </form>


¿Alguna idea? Línea 13 comienza en: $fp = fopen($config["file"],"w"); así que ya sabéis de dónde provienen los errores.

Errores:
ADVERTENCIA: fopen(213.108.31.167-27030/etpro/server.cfg) [function.fopen]: failed to open stream: No such file or directory in [LINK] on line 13

ADVERTENCIA: fwrite(): supplied argument is not a valid stream resource en [LINK] on line 14

ADVERTENCIA: fclose(): supplied argument is not a valid stream resource en [LINK] en la línea 15

ADVERTENCIA: ftp_connect () [function.ftp-connect]: php_network_getaddresses: getaddrinfo failed: nombre o servicio no conocido en [LINK] on line 17

ADVERTENCIA: ftp_login() espera parámetro 1 recurso, boolean dada en [LINK] en la línea 18

ADVERTENCIA: ftp_pasv () espera parámetro 1 recurso, boolean dada en [LINK] en la línea 19

ADVERTENCIA: ftp_put() espera parámetro 1 recurso, boolean dada en [LINK] en línea 20

ADVERTENCIA: ftp_close () espera parámetro 1 recurso, boolean dada en [LINK] en línea 21


Gracias de antemano
  • Anonymous
  • Bot
  • No Avatar
  • Registrado: 25 Feb 2008
  • Mensajes: ?
  • Loc: Ozzuland
  • Status: Online

Nota Enero 29th, 2013, 4:13 am

  • ScottG
  • Proficient
  • Proficient
  • No Avatar
  • Registrado: Jul 06, 2010
  • Mensajes: 261
  • Status: Offline

Nota Enero 29th, 2013, 9:08 am

¿Es el archivo en el mismo servidor que el formulario? Si es por qué no simplemente usas fopen y la ruta de acceso al archivo por ejemplo fopen("../ etpro/server.cfg "); . IM no está seguro de que el archivo que en relación con la raíz de su web.

También mire a ver si el servidor permite fopen mucha hosting proveedores bloque la fopen debido a problemas de seguridad.
  • Mitchell_
  • Newbie
  • Newbie
  • No Avatar
  • Registrado: Ene 29, 2013
  • Mensajes: 6
  • Status: Offline

Nota Enero 29th, 2013, 10:01 am

Hola, gracias por la respuesta.

No, no es en el mismo servidor. Tengo 2 FTPs 1 para la web y 1 para el server.cfg. El FTP de la server.cfg no está en un servidor dedicado de mí mismo, pero acaba de contratar un gameserver de YCN Hosting. ¿¿Cómo se parece la ruta? $fp = fopen ($ config [ftp: / / ycn-hosting. [¿Cant-put-extention]/213.108.31.167-27030/etpro/Server.cfg],"w");?
  • ScottG
  • Proficient
  • Proficient
  • No Avatar
  • Registrado: Jul 06, 2010
  • Mensajes: 261
  • Status: Offline

Nota Enero 29th, 2013, 10:21 am

Ya está en un servidor diferente fopen no funciona el FTP sería su opción.

también fopen no funcionará en este caso
PHP Código: [ Select ]
$fp = fopen($config['file'],'w');
fwrite($fp,stripslashes($_POST['newd']));
fclose($fp);
 
  1. $fp = fopen($config['file'],'w');
  2. fwrite($fp,stripslashes($_POST['newd']));
  3. fclose($fp);
  4.  


En cambio lo que puede hacer es hacer un server.cfg y manténgalo en el servidor con el formulario hasta que se FTPed el archivo...así que algo como esto. es posible que deba ajustar los caminos.

PHP Código: [ Select ]
$fp = fopen('temp_server.cfg','w');
fwrite($fp,stripslashes($_POST['newd']));
fclose($fp);
 
$ftp = ftp_connect($config['domain']);
ftp_login($ftp,$config['user'],$config['pass']);
ftp_pasv($ftp,TRUE);
ftp_put($ftp,'etpro/server.cfg','temp_server.cfg',FTP_BINARY);
ftp_close($ftp);
 
  1. $fp = fopen('temp_server.cfg','w');
  2. fwrite($fp,stripslashes($_POST['newd']));
  3. fclose($fp);
  4.  
  5. $ftp = ftp_connect($config['domain']);
  6. ftp_login($ftp,$config['user'],$config['pass']);
  7. ftp_pasv($ftp,TRUE);
  8. ftp_put($ftp,'etpro/server.cfg','temp_server.cfg',FTP_BINARY);
  9. ftp_close($ftp);
  10.  



¿Están pasando un directorio con el anfitrión al intentar conectarse al ftp? Si es así, podría ser la causa de su problema de conexión ftp
  • ScottG
  • Proficient
  • Proficient
  • No Avatar
  • Registrado: Jul 06, 2010
  • Mensajes: 261
  • Status: Offline

Nota Enero 29th, 2013, 10:23 am

¿También es 213.108.31.167-27030 una carpeta?
  • Mitchell_
  • Newbie
  • Newbie
  • No Avatar
  • Registrado: Ene 29, 2013
  • Mensajes: 6
  • Status: Offline

Nota Enero 29th, 2013, 1:35 pm

Hola, gracias mucho estoy empezando a entenderlo ahora:D

Sí, 213.108.31.167-27030 es una carpeta.
  • Mitchell_
  • Newbie
  • Newbie
  • No Avatar
  • Registrado: Ene 29, 2013
  • Mensajes: 6
  • Status: Offline

Nota Enero 29th, 2013, 1:44 pm

¿Que te refieres con que pasan un directorio con el anfitrión al intentar conectarse al ftp? (lo siento no sé mucho de esto).

He probado el código pero estoy recibiendo los mismos errores sólo la primera de ellas es diferente:

ADVERTENCIA: fopen(temp_server.cfg) [function.fopen]: failed to open stream: Permiso denegado en [LINK] on line 13
  • ScottG
  • Proficient
  • Proficient
  • No Avatar
  • Registrado: Jul 06, 2010
  • Mensajes: 261
  • Status: Offline

Nota Enero 29th, 2013, 4:20 pm

OK lo primero lo que quiero decir es que está intentando conectar con el host como esta ftp://ycn-hosting.yoursite.com/ o es como ftp://ycn-hosting.com/yoursite Si usted podría hacer un vínculo genérico que ayudaría a

En segundo lugar la carpeta que contiene el formulario no tiene permisos de escritura establecido.
  • Mitchell_
  • Newbie
  • Newbie
  • No Avatar
  • Registrado: Ene 29, 2013
  • Mensajes: 6
  • Status: Offline

Nota Enero 30th, 2013, 3:34 am

Hola, es el segundo de ellos. .[existe extention]/213.108.31.167-27030/etpro/server.cfg ruta de acceso completa del archivo. (Extensión = com pero no estoy autorizado a publicar enlaces)
  • Mitchell_
  • Newbie
  • Newbie
  • No Avatar
  • Registrado: Ene 29, 2013
  • Mensajes: 6
  • Status: Offline

Nota Enero 30th, 2013, 3:39 am

Tengo esta atm:

Código: [ Select ]
<?php

$config = array
  (
  'user' => 'Hunterr',
  'pass' => '[PASS]',
  'domain'  => 'ycn-hosting.[EXTENSION]:21',
  'file'   => '213.108.31.167-27030/etpro/server.cfg',    # relative to 'domain'
  );

if(isset($_POST['submit']))
  {
    $fp = fopen('temp_server.cfg','w');
fwrite($fp,stripslashes($_POST['newd']));
fclose($fp);

$ftp = ftp_connect($config['domain']);
ftp_login($ftp,$config['user'],$config['pass']);
ftp_pasv($ftp,TRUE);
ftp_put($ftp,'213.108.31.167-27030/etpro/server.cfg','temp_server.cfg',FTP_BINARY);
ftp_close($ftp);
  

  }
?>
  1. <?php
  2. $config = array
  3.   (
  4.   'user' => 'Hunterr',
  5.   'pass' => '[PASS]',
  6.   'domain'  => 'ycn-hosting.[EXTENSION]:21',
  7.   'file'   => '213.108.31.167-27030/etpro/server.cfg',    # relative to 'domain'
  8.   );
  9. if(isset($_POST['submit']))
  10.   {
  11.     $fp = fopen('temp_server.cfg','w');
  12. fwrite($fp,stripslashes($_POST['newd']));
  13. fclose($fp);
  14. $ftp = ftp_connect($config['domain']);
  15. ftp_login($ftp,$config['user'],$config['pass']);
  16. ftp_pasv($ftp,TRUE);
  17. ftp_put($ftp,'213.108.31.167-27030/etpro/server.cfg','temp_server.cfg',FTP_BINARY);
  18. ftp_close($ftp);
  19.   
  20.   }
  21. ?>


Código: [ Select ]
            <form width="440" height="440" method="post" action="<?=( $_SERVER['PHP_SELF'] )?>">
<textarea name="newd"><?=( file_get_contents('ftp://'.$config['user'].':'.$config['pass'].'@'.$config['domain'].'/'.$config['file']) )?></textarea>
<input type="submit" name="submit" value="Save">
</form>
  1.             <form width="440" height="440" method="post" action="<?=( $_SERVER['PHP_SELF'] )?>">
  2. <textarea name="newd"><?=( file_get_contents('ftp://'.$config['user'].':'.$config['pass'].'@'.$config['domain'].'/'.$config['file']) )?></textarea>
  3. <input type="submit" name="submit" value="Save">
  4. </form>


No me aparecen errores en la línea 13, pero a los 17 ($ ftp = ftp_connect($config["domain"]);)

ADVERTENCIA: ftp_connect() [function.ftp-connect]: php_network_getaddresses: getaddrinfo failed: nombre o servicio no conocido en [LINK] on line 17

ADVERTENCIA: ftp_login() espera que el parámetro 1 a ser recurso, booleana dada en [LINK] on line 18

ADVERTENCIA: ftp_pasv () espera que el parámetro 1 a ser recurso, booleana dada en [LINK] on line 19

ADVERTENCIA: ftp_put() espera que el parámetro 1 a ser recurso, booleana dada en [LINK] en la línea 20

ADVERTENCIA: ftp_close () espera que el parámetro 1 a ser recurso, booleana dada en [LINK] on line 21

Os he puesto 777 en ambos ftps para los archivos.
  • ScottG
  • Proficient
  • Proficient
  • No Avatar
  • Registrado: Jul 06, 2010
  • Mensajes: 261
  • Status: Offline

Nota Enero 30th, 2013, 7:40 am

el error significa que no puede encontrar el servidor FTP. Nombre de dominio no existe, error de resolución de nombres. que desencadena todos los demás errores abajo.

En su dominio, veo su pasar el puerto, así
"dominio" = &gt; Hospedaje ycn.[EXTENSIÓN]: 21,

Probar algo como esto
PHP Código: [ Select ]
    <?php
    $config = array
      (
      'user' => 'Hunterr',
      'pass' => '[PASS]',
      'domain'  => 'ycn-hosting.[EXTENSION]',
      'port'  => '21',
      'file'   => '213.108.31.167-27030/etpro/server.cfg',    # relative to 'domain'
     );
    if(isset($_POST['submit']))
      {
        $fp = fopen('temp_server.cfg','w');
    fwrite($fp,stripslashes($_POST['newd']));
    fclose($fp);
 
    // Add the port here
    $ftp = ftp_connect($config['domain'], $config['port']);
   
    ftp_login($ftp,$config['user'],$config['pass']);
    ftp_pasv($ftp,TRUE);
    ftp_put($ftp,'213.108.31.167-27030/etpro/server.cfg','temp_server.cfg',FTP_BINARY);
    ftp_close($ftp);
     
      }
    ?>
 
  1.     <?php
  2.     $config = array
  3.       (
  4.       'user' => 'Hunterr',
  5.       'pass' => '[PASS]',
  6.       'domain'  => 'ycn-hosting.[EXTENSION]',
  7.       'port'  => '21',
  8.       'file'   => '213.108.31.167-27030/etpro/server.cfg',    # relative to 'domain'
  9.      );
  10.     if(isset($_POST['submit']))
  11.       {
  12.         $fp = fopen('temp_server.cfg','w');
  13.     fwrite($fp,stripslashes($_POST['newd']));
  14.     fclose($fp);
  15.  
  16.     // Add the port here
  17.     $ftp = ftp_connect($config['domain'], $config['port']);
  18.    
  19.     ftp_login($ftp,$config['user'],$config['pass']);
  20.     ftp_pasv($ftp,TRUE);
  21.     ftp_put($ftp,'213.108.31.167-27030/etpro/server.cfg','temp_server.cfg',FTP_BINARY);
  22.     ftp_close($ftp);
  23.      
  24.       }
  25.     ?>
  26.  
  • demonmaestro
  • Gold Member
  • Gold Member
  • Avatar de Usuario
  • Registrado: Jun 21, 2006
  • Mensajes: 484
  • Loc: Conroe, Texas
  • Status: Offline

Nota Mayo 8th, 2013, 8:57 pm

im sorprendido que no he visto esto antes. PERO ¿por qué estás tratando de cambiar el server.cfg

Como un jugador de lobo de mucho tiempo. Sé que hay algunos hosts que son realmente exigentes sobre el archivo server.cfg debido a puede cambiar los jugadores máximos.

Pensé et murió hace tiempo... je
Thanks, Josh --DemonMaestro
www.LilNetwork.com
Fun Website www.ShoutsCloud.com

Publicar Información

  • Total de mensajes en este tema: 12 mensajes
  • Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 220 invitados
  • No puede abrir nuevos temas en este Foro
  • No puede responder a temas en este Foro
  • No puede editar sus mensajes en este Foro
  • No puede borrar sus mensajes en este Foro
  • No puede enviar adjuntos en este Foro
 
 

© 2011 Unmelted, LLC. Ozzu® es una marca registrada de Unmelted, LLC