Tengo un convertidor de Word a PDF que funciona desde Commandline, por lo que creamos un programa de software intermedio para aceptar comandos a través de Classic ASP. Eso funcionó, así que luego creamos el programa de software intermedio como un servicio de Windows y todo funcionó bien hasta que pasamos de nuestro servidor de desarrollo (Windows Server 2012) a nuestro servidor de producción (Windows Server 2019). Ahora que el servicio de Windows ya no funciona y escupe errores sobre no poder encontrar o conectarse a COM.
Así que abandoné el servicio de Windows de middleware e intenté usar PHP para ejecutar el convertidor de Word a PDF. Pero eso se queja de no encontrar un COM o simplemente se cuelga.
El desarrollador del convertidor de PDF recomendó probar el comando PHP usando XCOPY, y he aquí que el verdadero problema surge... PHP no tiene los derechos/permisos para usar XCOPY o la aplicación de conversión de PDF, o nuestro servicio de software intermedio. Un ejemplo de PHP es...
$answer = shell_exec('xcopy /S /I /Q /Y /F "C:\IN\Word.docx" "C:\OUT\"') echo $answer;Entonces, debe haber una diferencia en la seguridad entre Windows Server 2012 y 2019. ¿Cómo solucionar eso y/o otorgar derechos de PHP para ejecutar aplicaciones?
Sí, UAC está deshabilitado y los permisos en las carpetas IN y OUT son de lectura, escritura y ejecución para todos.
¿Cómo habilito PHP para ejecutar comandos XCOPY en Windows Server 2019?
Su código funciona con PHP en Windows Server 2019. Si no funciona en su servidor, intente lo siguiente:
Compruebe que la instalación del PDF fue a C:\PDF\ y no a C:\program Files\ porque un espacio en el nombre de esa carpeta puede ser un asesino para PHP, que fue diseñado para ejecutarse en Apache y no en Windows.
En el Administrador de IIS, verifique las asignaciones de controladores para PHP. Puede encontrar uno o dos:
Ambos deben apuntar a C:\PHP\php-cgi.exe
Si aún recibe errores, verifique C:\Windows\Temp\ para ver si hay errores de FastCGI.