Error en Web app con cgi

Tras instalar una primera versin en mi servidor todo iba bien, pero en una actualizacin dej de funcionar y da un error 500:

En un primer momento sala:

[Thu Oct 26 15:22:45.576063 2017] [cgi:error] [pid 28286] [client
213.151.116.122:37716] AH01215: Can’t exec
“/var/www/vhosts/midominio.org/cgi-bin/asa/asa”: Permission denied at
asa.cgi line 186.
[Thu Oct 26 15:22:45.576252 2017] [cgi:error] [pid 28286] [client
213.151.116.122:37716] AH01215: Can’t use an undefined value as a symbol
reference at asa.cgi line 118.
[Thu Oct 26 15:22:45.576622 2017] [cgi:error] [pid 28286] [client
213.151.116.122:37716] End of script output before headers: asa.cgi

He puesto el bit de ejecucin al fichero “asa” y en la siguiente llamada da:

[Thu Oct 26 15:23:09.711691 2017] [cgi:error] [pid 28285] [client
213.151.116.122:37727] AH01215: Can’t use an undefined value as a symbol
reference at asa.cgi line 118.
[Thu Oct 26 15:23:09.712137 2017] [cgi:error] [pid 28285] [client
213.151.116.122:37727] End of script output before headers: asa.cgi

La lnea 118 es;
print $sock $body;

Al parecer la variable $sock no se inicializa correctamente.

Alguien sabe cmo puedo solucionarlo ? ya no se qu hacer.

Saludos.

Que sistema operativo usas? (distribucin Linux quiero decir)

Si, linux en el servidor.
Y en la app, Linux 64 bit.

Te preguntaba por la distribucin.

Según Plesk es ?Debian 8.9?

En Debian no he probado, pero en RedHat y CentOS el .htaccess que trae la aplicacin generada por Xojo ocasiona ese problema

Prueba renombre .htaccess a cualquier otra cosa, mata los procesos que puedan quedar de tu aplicacin (con kill y si no se mueren con kill -9) y prueba de nuevo. En RedHat y CentOS se resuelve de ese modo.

Sigue igual. Ahora he creado un web app vacio, sin nada y pasa exactamente igual.

solo funioa el test/test.cgi que traen instalado

Pero una de las primeras modificaciones que hice si que funciona, es muy raro.

Lo estoy programando con la r2.1

Has comprobado los logs de apache? Mira los errores que puedan aparecer justo despus de acceder a la aplicacin.

Veo que si habas mirado los logs (respond sin ver la primera entrada!)

Acabo de probar con una mquina Debian (Stretch), (pero sin Plesk) y una aplicacin funciona correctamente sin ningn cambio a .htaccess (Apache 2.4.25-3).

SOLUCIONADO.

Tras subir una web app nueva sin tocar, vi en el log que haba problemas de permisos.

En todos los tutoriales decan de poner como 755 al archivo app.cgi y los archivos del app_lib, lectura y escritura para el .cfg

Pero el problema era que el archivo “aplicacion(app)” no se tocaba, pero tambin hay que ponerle a 755
As quedan todos los permisos:
app.cfg -> 666
app.cgi -> 755
app -> 755
Carpeta Resources -> sin tocar
carpeta libs y todos sus archivos -> 755

Adems he agregado un botn para terminar la app (App.Quit) con un timer como muestra aqu:
Poner un Timer

No olvidar poner “sender As Timer” como parmetro del mtodo TimerShutDown o como le llamis.

Ahora va perfecto.

Hola Cecilio,

Es fundamental que la app propiamente dicha tenga los permisos correctos. Hace tiempo publiqu un tutorial (vdeo) en el que se explican los pasos para publicar una app web bajo CGI o Standalone; y en la que se comenta el tema de permisos y otros aspectos de configuracin. Confo que sea til! Se puede ver en este enlace

En otro orden de cosas, sera importante marcar como solucionado (cerrado) el hilo. De ese modo otras personas pueden comprobarlo de un vistazo.

Javier

Hola Javier.
Muchas gracias pero NO est cerrado. Os explico:

He subido una actualizacin y de nuevo error 500 Server Error. Con los mismos permisos, reinicio del servidor por si se queda algo abierto, etc.

No se que pasa pero me da mucha inseguridad que pase eso, unas veces funciona y otras no. He llegado a poner 777 a todos los archivos y nada de nada.

alguna idea ?

Otra pregunta: En un servidor se puede poner en modo Standalone ? que ventajas o inconvenientes tiene ?

No debes poner 777 a todo.

Como subes los archivos al servidor?

Te recomiendo que comprimas todo, lo subas con scp y descomprimas all. Este mtodo garantiza la integridad de los binarios. (Y si hay algn error de comunicacin que no te corrija scp, te lo “cantar” la descompresin.

Obviamente… de cambiar permisos ha de ser una vez subidos los archivos (es decir, en el remoto no en local).

Javier

Me acabo de dar cuenta que no se ha hablado aqu del propietario y grupo.

Haz chown -R usuario:grupo Directorio_aplicacin

Usuario y grupo son bajo los que corre apache. Al ser Plesk te podra variar segn cada sitio, pero puedes mirar los que tiene por ejemplo:

/var/www/vhosts/SITE/httpdocs

Podra ser, Jos Mara.
httpdocs en mi caso es cecilio:psaserv
y cgi-bin es cecilio:psacln

Cambia el grupo.

Al ser un servidor administrado no tengo acceso a la consola, voy a pedir a los tcnicos que lo mantienen que igualen el grupo por si tiene que ver.

Javier, efectivamente los pemisos los cambio con el cliente de ftp en el directorio remoto.

Al ejecutar el cgi directamente devuelve un error porque no encuentra una
libera:

Failed to load plugin v4rb_x64_release.so:
libvshared_release_x64.so.716: cannot open shared object file: No such file or
directory
Use of uninitialized value $ENV{“REQUEST_METHOD”} in string eq at ./asa.cgi
line 110.
Can’t use an undefined value as a symbol reference at ./asa.cgi line 118.

Pero la libera “v4rb_x64_release.so” est en “asa Libs”.

alguna idea ?

Hola Cecilio,

Lo del plugin tiene que ver con Valentina, por lo que veo… y creo que hablan de ello en este enlace.

[quote=357115:@Cecilio Ruiz Fernandez]Podría ser, José María.
httpdocs en mi caso es cecilio:psaserv
y cgi-bin es cecilio:psacln
[/quote]

psaserv es global, tu debes poner el grupo de lo que hay dentro de httpdocs, entonces es psacln (igual que en CentOS / RHEL)

Ni idea de Valentina, pero puedes ver si te falta alguna librería mas con ldd

Cambias al directorio donde tienes la aplicación y haces (sin cgi, al binario)

ldd aplicacion

Obtendrás algo así

ldd aplicacion linux-vdso.so.1 => (0x00007fff27c5e000) XojoConsoleFramework64.so => /var/www/vhosts/dominio.tld/httpdocs/cgi-bin/aplicacion/./aplicacion Libs/XojoConsoleFramework64.so (0x00007fbef45df000) libc.so.6 => /lib64/libc.so.6 (0x00007fbef420e000) libgobject-2.0.so.0 => /lib64/libgobject-2.0.so.0 (0x00007fbef3fbe000) libglib-2.0.so.0 => /lib64/libglib-2.0.so.0 (0x00007fbef3cac000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fbef3a8f000) libdl.so.2 => /lib64/libdl.so.2 (0x00007fbef388b000) libm.so.6 => /lib64/libm.so.6 (0x00007fbef3589000) libc++.so.1 => /var/www/vhosts/dominio.tld/httpdocs/cgi-bin/aplicacion/./aplicacion Libs/libc++.so.1 (0x00007fbef31d7000) libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007fbef2fc1000) /lib64/ld-linux-x86-64.so.2 (0x0000562255e1a000) libpcre.so.1 => /lib64/libpcre.so.1 (0x00007fbef2d5f000) libffi.so.6 => /lib64/libffi.so.6 (0x00007fbef2b56000) librt.so.1 => /lib64/librt.so.1 (0x00007fbef294e000)

Lo que no tenga algo despues de => es que te falta