2 Stimmen

Befehl funktioniert in cmd, aber nicht über php shell_exec

Ich habe einen Befehl in der Eingabeaufforderung (cmd), der wie folgt aussieht

C:\wamp\www\editor\DocTo-master\exe\docto -f C:\wamp\www\editor\uploaded\uploaded_files_21_original\AffidavitinDIR-4.docx -O "C:\wamp\www\editor\uploaded\uploaded_files_21_original\pdf\21.pdf" -T wdFormatPDF

Wenn ich das in cmd ausführe, funktioniert es einwandfrei und gibt die Ausgabe (von doc zu pdf) wie erwartet. Jedoch wenn ich denselben Befehl in php shell_exec verwende, wie folgt

shell_exec('C:\wamp\www\editor\DocTo-master\exe\docto -f C:\wamp\www\editor\uploaded\uploaded_files_21_original\AffidavitinDIR-4.docx -O "C:\wamp\www\editor\uploaded\uploaded_files_21_original\pdf\21.pdf" -T wdFormatPDF');

Erhalte ich mit dem obigen Code in php nicht die gewünschte Ausgabe. Jede Hilfe wird geschätzt

1voto

rjt Punkte 1002

Scheint, dass die meisten Probleme mit Berechtigungen oder Weiterleitungen zu tun haben.

Ermöglichen Ihre aktuellen Benutzeranmeldeinformationen das Erstellen von Dateien in diesem Verzeichnis, aber der Benutzername des Webservers?

Leiten Sie stderr zur stdout um, um Fehlerinformationen zu erhalten.

Ist das Zitieren richtig?

Schauen Sie in die Fehlerprotokolle des Webservers.

0voto

Toby Allen Punkte 10652

Ich bin der Autor von docto.

Das ist höchstwahrscheinlich ein Berechtigungsproblem, da PHP möglicherweise nicht die korrekten Berechtigungen hat, um Word auf Ihrem Server auszuführen.

Ich führe dies selbst auf einem Windows 2012 Server mit Word 2010 aus, es funktioniert einwandfrei. DocTo ist in einem übergeordneten Verzeichnis über dem Webserver-Stammverzeichnis installiert.

PHP wird als NTSystem Authority ausgeführt

Außerdem verwende ich exec anstelle von shell_exec, bin mir nicht sicher, ob das einen Unterschied macht

0voto

PmLearning Punkte 13

Um dieses Problem zu beheben, müssen Sie Desktop-Ordner in diesen Pfaden erstellen:

C:\Windows\SysWOW64\config\systemprofile\Desktop

C:\Windows\System32\config\systemprofile\Desktop

Gehen Sie dann zu (Systemsteuerung\Administrative Tools\Services) und klicken Sie mit der rechten Maustaste auf Ihren Apache-Dienst. Gehen Sie zum Tab "Anmelden" und aktivieren Sie die Option "Zulassen, dass der Dienst mit dem Desktop interagiert".

Setzen Sie dann Ihren Apache-Dienst zurück.

http://pmlearning.info

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X