Excepcion: [Errno 13] Permission denied (2)

1,317 views
Skip to first unread message

Claudio Mucci

unread,
Jun 14, 2017, 10:26:22 PM6/14/17
to PyAfipWs Factura Electrónica Libre y temas relacionados AFIP ARBA ANMAT
Hola a todos

Estoy volviéndome loco con este problema, y no puedo encontrar "por dónde" puede saltar la solución. 

Mi sistema corre bajo Centos 7 y PHP 5.4

Paso a contar el caso: 

Tengo el scrtip (aaa.php) que llama al script (bbb.php). Este último es el que hace la ejecución de los comandos PyAfipWs. 
Muestro parte de bbb.php:


# PHP CODE bbb.php

chdir
("/home/myuser/pyafipws/");

$cmd
= "/usr/bin/python2.7 rece1.py 30123456789.ini /ptosventa";

exec($cmd, $out);
 
$data
= array(
 
"out" => $out[2],
 
"cmd" => $cmd,
);
 
print_r
(json_encode($data));


El problema en cuestión es que, si corro el script desde el servidor apache, me tira el siguiente error:

Excepcion: [Errno 13] Permission denied


Sin embargo, si el comando lo ejecuto desde la consola, me lo ejecuta perfectamente. 
Cambié los permisos de escritura en la carpeta pyafipws, sin embargo me genera el error. 

Esto sucede porque estoy migrando el sistema desde otro proveedor, y el mismo código exactamente corre perfecto, y la conexión con afip corre perfectamente. 

Alguna idea?????

Gracias

Andres Misiak

unread,
Jun 15, 2017, 9:27:50 AM6/15/17
to pyafipws
Buen día Claudio:

Esto seguro que es un tema de permisos. Sospecho que puede ser que estés ejecutando el script (el primer thread) desde el navegador y por ende el usuario es www-data. Fijate que ese usuario tenga permiso para ejecutar rece1.py, leer 30123456789.ini y además el permiso para escribir en la carpeta donde se guardan los xml, la entrada y la salida (archivos especificados en el .ini).

Con suerte por ahí encontrás que te falta algún permiso y lo resolves.

Si no estás en prod, una práctica que suelo hacer es poner todo 777 y ver si funciona. Si pasa ya estás seguro que es un tema de permisos. Por supuesto que tenes que volver a poner los permisos bien, pero ya sabes que el problema es por acá.

Saludos.

Andres Misiak

--
Proyecto PyAfipWs Factura Electrónica Libre y temas relacionados AFIP ARBA ANMAT:
http://www.pyafipws.com.ar/ - http://www.github.com/reingart/pyafipws - http://www.sistemasagiles.com.ar/
---
Has recibido este mensaje porque estás suscrito al grupo "PyAfipWs Factura Electrónica Libre y temas relacionados AFIP ARBA ANMAT" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a pyafipws+unsubscribe@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a pyaf...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/pyafipws.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Claudio Mucci

unread,
Jun 15, 2017, 2:26:53 PM6/15/17
to PyAfipWs Factura Electrónica Libre y temas relacionados AFIP ARBA ANMAT
Hola Andres, 

Gracias por tu respuesta. 
Lamentablemente hice las pruebas que me recomendas, pero aún sigue sin ejecutar el comando. 
Como para descartar otra posible pregunta, te confirmo que el PHP está configurado como para que ejecute sentencias exe (disable_functions = null)

Sigo perdidoooo.


Andres Misiak

Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a pyafipws+u...@googlegroups.com.

Claudio Mucci

unread,
Jun 15, 2017, 8:41:43 PM6/15/17
to PyAfipWs Factura Electrónica Libre y temas relacionados AFIP ARBA ANMAT
Como dato adicional, pego el traceback

Traceback (most recent call last):


 
File "rece1.py", line 439, in <module>
    ult_cbte
= ws.CompUltimoAutorizado(tipo_cbte, punto_vta)


 
File "/home/verena/pyafipws/utils.py", line 151, in capturar_errores_wrapper
   
return func(self, *args, **kwargs)


 
File "/home/verena/pyafipws/wsfev1.py", line 322, in CompUltimoAutorizado
   
CbteTipo=tipo_cbte,


 
File "/home/verena/pyafipws/pysimplesoap/client.py", line 147, in <lambda>
   
return lambda *args, **kwargs: self.wsdl_call(attr,*args,**kwargs)


 
File "/home/verena/pyafipws/pysimplesoap/client.py", line 342, in wsdl_call
    response
= self.call(method, *params)


 
File "/home/verena/pyafipws/pysimplesoap/client.py", line 216, in call
   
self.xml_response = self.send(method, self.xml_request)


 
File "/home/verena/pyafipws/pysimplesoap/client.py", line 261, in send
    location
, "POST", body=xml, headers=headers)


 
File "/usr/lib/python2.7/site-packages/httplib2-0.9.1-py2.7.egg/httplib2/__init__.py", line 1608, in request
   
(response, content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cachekey)


 
File "/usr/lib/python2.7/site-packages/httplib2-0.9.1-py2.7.egg/httplib2/__init__.py", line 1350, in _request
   
(response, content) = self._conn_request(conn, request_uri, method, body, headers)


 
File "/usr/lib/python2.7/site-packages/httplib2-0.9.1-py2.7.egg/httplib2/__init__.py", line 1272, in _conn_request
    conn
.connect()


 
File "/usr/lib/python2.7/site-packages/httplib2-0.9.1-py2.7.egg/httplib2/__init__.py", line 1036, in connect
   
self.disable_ssl_certificate_validation, self.ca_certs)


 
File "/home/verena/pyafipws/pysimplesoap/transport.py", line 91, in _ssl_wrap_socket
    ssl_version
=ver)


 
File "/usr/lib64/python2.7/ssl.py", line 936, in wrap_socket
    ciphers
=ciphers)


 
File "/usr/lib64/python2.7/ssl.py", line 547, in __init__
   
self._context.load_verify_locations(ca_certs)


IOError: [Errno 13] Permission denied

Mariano Reingart

unread,
Jun 15, 2017, 10:57:07 PM6/15/17
to pyaf...@googlegroups.com
2017-06-15 21:41 GMT-03:00 Claudio Mucci <fono...@gmail.com>:
Como dato adicional, pego el traceback

Traceback (most recent call last):

 
File "rece1.py", line 439, in <module>
    ult_cbte
= ws.CompUltimoAutorizado(tipo_cbte, punto_vta)

 
File "/usr/lib64/python2.7/ssl.py", line 547, in __init__
   
self._context.load_verify_locations(ca_certs)


IOError: [Errno 13] Permission denied


Debe estar queriendo cargar los certificados de desde /etc o alguna otra carpeta restringida.
Tendrías que revisar en el rece.ini la configuración de CACERT:

[WSAA]
..
CACERT=/home/myuser/pyafipws/conf/afip_ca_info.crt

[WSFEv1]
..
CACERT=/home/myuser/pyafipws/conf/afip_ca_info.crt

Hasta ese directorio debería tener permisos de acceso y lectura (a+x a+r).
También el directorio cache debería tener permisos de escritura para guardar el Ticket de Acceso (TA-*.xml)

Para más info ver Documentación:
Sds


Claudio Mucci

unread,
Jun 16, 2017, 8:44:06 AM6/16/17
to PyAfipWs Factura Electrónica Libre y temas relacionados AFIP ARBA ANMAT
Hola Mariano

Gracias! Funcionó!!!

El tema era que tenía configurado solo en [WSAA] el path al afip_ca_info.crt, y no estaba en [WSFEv1].
Lo extraño es que en lo otro servidor lo tenía así, y se conectaba perfectamente. 

De todas formas, ahí funciona. 
Gracias y saludos. 

Walter Negro

unread,
Jun 23, 2017, 2:01:50 PM6/23/17
to PyAfipWs Factura Electrónica Libre y temas relacionados AFIP ARBA ANMAT
Yo tengo un problema similar de [Errno 13] pero en distinto lugar.

Hice una compilación para generar un instalador a medida porque uso varios ws y los instaladores individuales borran lo que hay y ponen lo nuevo.
El error que tengo es
IOError: [Errno 13] Permission denied: 'C:\\PROGRA~2\\PyAfipWs\\.\\win32com\\gen_py\\__init__.py'

Si lo instalo en C:\PyAfipWs, en la carpeta C:\PyAfipWs\win32com\gen_py donde al bajar la versión está el archivo __init__.pyc, al ejecutarlo por primera vez, se generan los archivos __init__.py y dicts.dat

No entiendo mucho de python, pero tratando de seguir la ruta del traceback, el tema es que cuando desde win32com.client se carga el modulo gencache, este llama primero a _LoadDicts() que intenta cargar dicts.dat, pero como no lo encuentra, lo intenta regenerar llamando a Rebuild(). En esta función, se llama a GetGeneratePath() para obtener el path donde grabar dicts.dat y antes de eso, genera __init__.py en esa misma carpeta.

No hay forma de hacer que win32.com.__gen_path__ apunte a una carpeta temporal?

Estoy usando pywin32-221.win32-py2.7

Reply all
Reply to author
Forward
0 new messages