Foros del Web » Programando para Internet » PHP »

Problema curl Server denied you to change to the given directory

Estas en el tema de Problema curl Server denied you to change to the given directory en el foro de PHP en Foros del Web. Buenos dias, Estoy tratando de asignar a una variable, en este caso $der, el contenido de un certificado digital. Pero me sale el siguiente error: ...
  #1 (permalink)  
Antiguo 09/09/2014, 08:34
 
Fecha de Ingreso: septiembre-2007
Mensajes: 76
Antigüedad: 16 años, 7 meses
Puntos: 2
Problema curl Server denied you to change to the given directory

Buenos dias,

Estoy tratando de asignar a una variable, en este caso $der, el contenido de un certificado digital. Pero me sale el siguiente error:

Server denied you to change to the given directory

El código que uso es el siguiente:
Código PHP:
$no_cert '00001000000202809550';
        
$p1 substr($no_cert06);
        
$p2 substr($no_cert66);
        
$p3 substr($no_cert122);
        
$p4 substr($no_cert142);
        
$p5 substr($no_cert162);
        
$path "ftp://ftp2.sat.gob.mx//certificados/FEA/$p1/$p2/$p3/$p4/$p5/$no_cert.cer";

        
$curl curl_init($path);
        
curl_setopt($curlCURLOPT_RETURNTRANSFERtrue);
        
curl_setopt($curlCURLOPT_FTP_USE_EPSVfalse);
        
curl_setopt($curlCURLOPT_TIMEOUT300); 
        
        
//Executes the cURL
        
$der curl_exec($curl);
        
$error curl_error($curl);
        
curl_close($curl);
        unset(
$curl);
            
        if(
$error){
            return 
$error;
        } 
La variable $der la uso para otras validaciones y funciones, si tienen alguna idea del porque sale el error o una mejor idea de como hacerlo, se los agredecere

Saludos.
  #2 (permalink)  
Antiguo 09/09/2014, 10:25
 
Fecha de Ingreso: septiembre-2007
Mensajes: 76
Antigüedad: 16 años, 7 meses
Puntos: 2
Respuesta: Problema curl Server denied you to change to the given directory

Me falto mencionar que el error se presenta intermitentemente, es decir puede ser que corra el script 5 veces y de esas 5, 2 arrojen error y 3 no, o al reves.

La solución temporal meter el script en un ciclo de esta forma

Código PHP:
$no_cert '00001000000202809550'
        
$p1 substr($no_cert06);
        
$p2 substr($no_cert66);
        
$p3 substr($no_cert122);
        
$p4 substr($no_cert142);
        
$p5 substr($no_cert162);
        
$path "ftp://ftp2.sat.gob.mx//certificados/FEA/$p1/$p2/$p3/$p4/$p5/$no_cert.cer";

        
$ban true;
        while(
$ban == true){
            
$curl curl_init($path);
            
curl_setopt($curlCURLOPT_RETURNTRANSFERtrue);
            
curl_setopt($curlCURLOPT_FTP_USE_EPSVfalse);
            
curl_setopt($curlCURLOPT_TIMEOUT300); 
            
            
//Executes the cURL
            
$der curl_exec($curl);
            
$error curl_error($curl);
                       
            
curl_close($curl);
            unset(
$curl);
                
            if(
$error){
                echo 
$error;
            }else{
                
$ban false;
            }
        } 
Según las pruebas que he realizado el maximo de ocasiones que realiza el ciclo son 3.

Ahora bien, que consecuencias en el rendimiento del equipo y/o en el tiempo de respuesta me puede traer esta solución? Consideran que es una solución correcta? o le estoy dando en la &%$ ... torre ... al script.

En espera de respuesta les mando un cordial saludo.
  #3 (permalink)  
Antiguo 09/09/2014, 14:28
 
Fecha de Ingreso: abril-2011
Ubicación: Vilcún, cerca de Temuco
Mensajes: 67
Antigüedad: 13 años
Puntos: 5
Respuesta: Problema curl Server denied you to change to the given directory

¿Si le agregas conecttimeout infinito?:

curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 0);

(digo, para estar seguros de que hay tiempo suficiente para restablecer la comunicación en cada vuelta, darle tiempo para respirar).

Etiquetas: curl, denied, ftp, server
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 06:22.