php libreoffice shell_exec funktioniert nicht
Ich versuche zu konvertieren .docx
Datei zu .html
mit php shell_exec
in CentOS 6.5
Mein php-code:
$command = "libreoffice --headless -convert-to html resume.docx 2>&1";
$result = shell_exec($command);
echo $result;
Wenn ich das index.php
bei http://localhost/converter/
es gibt mich:
javaldx: could not find a Java Runtime Environment! Warnung: Fehler beim Lesen der Weg aus javaldx /usr/lib64/libreoffice/program/soffice.bin X11-Fehler: Can ' T open display: Set DISPLAY-Umgebungsvariable zu verwenden -display-option oder überprüfen Sie die Berechtigungen von Ihrem X-Server (Siehe "man X" bzw. "man xhost" für details)`
während im terminal funktioniert es perfekt:
cd /var/www/html/converter/
libreoffice --healdess -convert-to html resume.docx
hier schafft es resume.html
in meinem /var/www/html/converter/
.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hallo ich habe das gleiche problem, ich möchte konvertieren von PDF-Dateien aus Google DOCS erstellt mit PHP, ich bin mit OpenSuse 12.3 mit LibreOffice, habe versucht, viele Dinge, ich endlich erkennen, dass der Fehler im Ordner:
1.- Überprüfen Sie zunächst, dass Sie nicht deaktiviert haben, shell_exec in php.ini und open_basedir nicht beschränken Sie Ihre Ordner zuzugreifen.
2.- Führen Sie den Befehl als einfacher Benutzer in der shell (terminal)
export HOME=/tmp && soffice --headless --convert-to pdf --outdir /srv/www/htdocs//srv/www/htdocs/Creecimientos/sic/app/webroot/usuarios/2/8_Pagare_CreePersonas.docx
3.- Wenn es funktioniert, du nur noch den richtigen Ordner in Ihrem code, wenn ich diesen code in PHP, es zeigt mir eine leere Seite, deswegen überprüfe ich die access_log von apache für jeden Hinweis:
[Java-framework] Fehler in der Funktion createSettingsDocument (- Elemente.cxx).
javaldx fehlgeschlagen!
Warnung: Fehler beim Lesen der Weg aus javaldx
kündigen, genannt nach dem werfen einer Instanz von 'com::sun::star::uno::RuntimeException'
Hinweis: mein Fehler war in export HOME=/tmp, ich überprüft, dass der Ordner in das root-system hat 777 tmp, aber das problem war, dass der apache keinen Zugriff auf ihn, vielleicht suchen Sie für einen relativen Ordner des Skripts, aber nach dem test viele Dinge, die ich nur ein Ordner mit Berechtigungen für den wwwrun HOME=/srv/www/htdocs/folder_with_777
Dies ist mein letzter code funktioniert..
In der Tat, es druckt: konvertieren srv/www/htdocs/Creecimientos/sic/app/webroot/usuarios/2/8_Pagare_CreePersonas.docx -> /srv/www/htdocs/Creecimientos/sic//8_Pagare_CreePersonas.pdf-Datei mit der writer_pdf_Export, nach Erfolg.
Ich andere änderungen vorgenommen, bevor in desesperate-Modus, aber keiner von Ihnen das problem gelöst, versucht, um den Eigentümer ändern zu soffice wich, fand es Hexe $ ls -l $(das libreoffice), versucht mit 777, etc..
Wahrscheinlich der Anwender, die LibreOffice ist da ran, nicht über eine beschreibbare home-Verzeichnis, damit Sie LibreOffice nicht erstellen Sie das Verzeichnis config so, und dann kann Sie nicht erstellen Sie es config-Dateien und die dann nicht geladen werden, Java, weil es nicht schreiben kann, der default-config. Ein bisschen albern, ich weiß.
Versuchen, indem Sie diesen parameter:
-env:UserInstallation=file:///tmp/whateverhere
Habe ich nicht genug Ruf zu kommentieren TD_Nijboer Antwort, aber die Antwort auf seine spezifischen problem scheint zu sein, dass
soffice
muss in der Lage sein zu Lesen & schreiben von config-Informationen irgendwo. Der erste Ort, es versucht zu tun, das ist dielibreoffice
Verzeichnis in~/.config
('~' bedeutet "des aktuellen Benutzers home-Verzeichnis").In Debian standardmäßig die
www-data
hat der Benutzer das home-Verzeichnis/var/www
, und hat keine Schreibberechtigung gibt.Wenn Sie sicherstellen, dass Sie über die Berechtigung zum erstellen
~/.config
selbst, oderlibreoffice
innerhalb einer bestehenden~/.config
ich erwarten, dass es funktionieren wird.2 Dinge, 1. der Befehl ist
soffice --headless
,2. ich habe eine ähnliche javaldx Fehler und es hat damit zu tun, mit freundlicher Genehmigung.
beim ausführen als root funktioniert es einwandfrei, aber php wird als www-data.
wenn jemand weiß, eine gute Möglichkeit zum ausführen von libreoffice von php lassen Sie es mich bitte wissen.
da bin ich immer ein
error code 77
sagen: